IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Générer automatiquement un fichier SQL de création de table [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 64
    Par défaut Générer automatiquement un fichier SQL de création de table
    BOnjour!

    Dans le cadre d'un stage, je souhaite générer un fichier SQL de structure de table (CREATE TABLE....(id int(11) auto_increment...)

    Voici mon code Php pour y parvenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    $recupStructure = "DESC ".$this->getNomTable()."";
    		$recupStructureSql = mysql_query($recupStructure) or die('Invalid query');
    		$nombreColsRecupStructure = mysql_num_fields($recupStructureSql);
    		while($struc = mysql_fetch_array($recupStructureSql)){
    			/**************************
    			 * 	 Gestion des clés 	*
    			 *************************/
    					if(strlen($struc['Key'])>0){
    						if($struc['Key']=="MUL"){
    							$keys[] = $struc['Field'];
    						}
    						if($struc['Key']==="PRI"){
    							$primary_key = $struc['Field'];
    						}
    					}
     
     
    			/****************************
    			 *  Gestion du champ null *	
    			 ***************************/ 
    						if(strlen($struc['Null'])>0){
    							$null = "NULL";
    						}
    						else{
    							$null = "NOT NULL";
    						}
     
    			/******************************
    			 *  Gestion du champ default  *	
    			 *****************************/ 
    				if($struc['Default']!="NULL"){
    					if(strlen($struc['Default'])>0){
    						$default = " default '".$struc['Default']."'";
    					}/*si la lgr >0*/
    					else{
    						if($primary_key==$struc['Field']){
    							/*s'il s agit d une clé primaire on ne fait rien*/
    						}
    						else{
    							$default = " default ''";
    						}
    					}
    				}
     
     
     
    			/**********************************
    			 *  	Gestion du champ extra 	  *
    			 *********************************/
    			if(isset($struc['Extra'])){
    				$extra = $struc['Extra'];
    			}
     
     
    			/****************************************
    			 * 	On concatene l'ensemble des valeurs	*
    			 ***************************************/
     
    			$result.="<br>".$struc['Field']." ".$struc['Type']." ".$null." ".$extra.$default.",";
    			/** A ce stade on a parcouru l ensemble des types et des champs**/
     
     
     
     
    		}/*while*/
     
    			/******************************
    			 * 		Gestion des clés	
    			 *****************************/
     
    					/** clé primaire **/
    					 	$result.="<br>PRIMARY KEY(".$primary_key."),";
     
    					/** autres clés **/
    						for($cnt=0;$cnt<sizeof($keys);$cnt++){
    							$result.="<br> KEY ".$keys[$cnt]." (".$keys[$cnt]."),";
    						}
     
     
    			/** On a une virgule en trop en derniere lettre **/
    			$result=substr($result, 0, -1);
     
     
    		return $result;
    Il s'avère que ce code ne genere pas précisément ce que phpmyadmin génére quand on exporte une table...
    Existe t il une méthode pour avoir plus d'informations sur une table que DESC ou SHOW COLUMNS (d'ailleurs DESC est un alias de Show columns...) sur les différentes clés?
    quelqu'un saurait il comment faire? ou s'il existe une fonction spécialement pour générer un fichier SQL à partir d'une structure de table préexistante?

    Merci d'avance !!!


    Cordialement,
    Shacamus

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 648
    Par défaut
    phpMyAdmin utilise les requêtes "SHOW CREATE TABLE" et "SHOW TABLE STATUS"

    tu peux trouver des explications sur ces requêtes là :
    http://dev.mysql.com/doc/refman/5.0/...ate-table.html
    http://dev.mysql.com/doc/refman/5.0/...le-status.html

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 64
    Par défaut
    merci, je viens justement en parsant la classe "mysql_dump" que c'était une solution envisageable et efficace

    Merci beaucoup !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Générer automatiquement les fichiers de mapping Dozer
    Par DevServlet dans le forum Persistance des données
    Réponses: 5
    Dernier message: 18/05/2011, 10h10
  2. Générer automatiquement des fichiers Word
    Par laurent35000 dans le forum Access
    Réponses: 3
    Dernier message: 13/06/2008, 17h33
  3. Requête SQL avec création de table sous condition
    Par misig dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/11/2007, 08h58
  4. Requete sql pour création de table dans une base access
    Par Ben156 dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/01/2006, 22h12
  5. [plugin]générer automatiquement un fichier web.xml
    Par car dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 15/03/2005, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo