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

Petit nouveau ! | 2 Messages

07 Août 2008, 11:40

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 :
[php]$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;
[/php]
Il s'avère que ce code ne genere pas précisément ce que phpmyadmin génére quand on exporte une table... quelqu'un saurait il comment faire? ou s'il existe une fonction spécialement pour cet usage ?

Merci d'avance !!!


Cordialement,
Shacamus

ViPHP
ViPHP | 5872 Messages

07 Août 2008, 13:14

Euh, et la requête SHOW CREATE TABLE tout simplement ?

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 11388 Messages

07 Août 2008, 13:26

Modération :
Shacamus, le multipostage est interdit sur le forum.

Merci de prendre le temps de lire les règlements.

Je laisse ce sujet ouvert.
L'autre a été supprimé.

Petit nouveau ! | 2 Messages

07 Août 2008, 13:29

Sékiltoyai : Merci, je l'ai trouvé également (parsing de la classe mysql_dump)

albat: En fait je ne savais pas dans quel forum poster, désolé !!

Merci beaucoup !!!

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 6375 Messages

07 Août 2008, 13:54

Modération :
Shacamus, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.