Creation d'une table dans mysql avec php

syranovic Messages postés 9 Statut Membre -  
syranovic Messages postés 9 Statut Membre -
Bonjour,

donc voila j'ai créer un fichier nommé inser.php, chargé de la création d'une nouvelle table dans ma base de donnée mysql dés que je clic sur mon bouton envoyer.
Le petit plus c'est que, le nom de ma nouvelle table c'est l'utilisateur qui l'encode grâce à un input tt bête insérer dans une page html exemple : <label>nom de la table :</label> <input name="nomtable" type="text" title="nomtable"/> sauf que, je ne sais pas comment insérer ma $_POST['nomtable'] dans ma page inser.php dont le voila le code :


<?php
mysql_connect("localhost", "root", "");
mysql_select_db(" coord ");
$requete="CREATE TABLE if not exists" .$_Post['nomtable']." (id int(1) primary key NOT NULL auto_increment,
adresse varchar(255) Not Null,
telephone varchar(255) Not Null,
mail varchar(255) Not null,
fax varchar(255) Not Null,
km int(11) Not null)";
$erreur=mysql_query($requete);
...
?>

Merci ^^
A voir également:

3 réponses

dariumis Messages postés 583 Statut Membre 63
 
Salut,
comme ça plutôt:
<?php
//faut tester l"existence de la variable
if(isset($_POST['nomtable'])){
       $table=$_POST['nomtable'];
}else{
       $table=-1;
}
mysql_connect("localhost", "root", "");
mysql_select_db(" coord ");
$requete="CREATE TABLE if not exists" .$table." (id int(1) primary key NOT NULL
.........


$_POST['nomtable']
s'écrit en majuscule, et non comme ceci $_Post['nomtable']. De plus je te déconseille de faire comme ceci, c'est pas une très bonne idée de laissé l'utilisateur créer le nom d'une table... car il existe beaucoup de mots réservé dans MySQL, par exemple tu peux pas nommé une table "TABLE"; il faudra donc que tu teste tous les cas, pouvant provoqué des bug. Il vaut mieux que tu trouve un système pour nommer tes table.
0
syranovic Messages postés 9 Statut Membre
 
^^ merci, enfaite, j'ai une page html qui demande a l'utilisateur d'ajouter une province, et dans ma base de données j'ai 2 tables, chaque table est une province qui contient des adresses, des distances,... donc les noms qui seront attribuer a chaque nouvelle table est le nom d'une province forcement, donc voila, mes pour le bout de code que vous m'avais filer, ne fonctionne pas, il m'affiche une erreur au niveau de ma ligne mysql_select_db(" coord "); dont voici le texte :

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\projet\CreationCentre.php on line 4

il n'es pas heureux avec cette écriture:

$requete="CREATE TABLE if not exists" .$table." (id int(1) primary key NOT NULL auto_increment,
....
le fait de couper la chaine et insérer la variable ( j crois ), cette écriture vient de mon imagination car je ne vois pas comment insérer ma variable sans qu'elle soit considérer comme une string normale, donc peut être que ce n'est pas comme çà qu'on procède tt simplement.
0
dariumis Messages postés 583 Statut Membre 63
 
Salut, en fait j'ai fais une erreur:

$requete="CREATE TABLE if not exists ".$table." (id int(1) primary key NOT NULL auto_increment,
....

j'ai décalé un espace entre "exists" et "$table".

si, c'est comme ça qu'il faut faire pour intégrer une variable dans une string, tu peux faire comme ceci:

$verbe="fait";  
echo $phrase="il $verbe beau";  
echo $phrase="il ".$verbe." beau";  
echo $phrase='il '.$verbe.' beau';  
0
syranovic Messages postés 9 Statut Membre
 
$requete="CREATE TABLE if not exists $table (id int(1) primary key NOT NULL auto_increment,
...
voici ma requête l'erreur était a cause de l'espace que j'ai mis pour ma déclaration de ma db mysql_select_db(" coord "); donc voila faut pas avoir d'espace ce qui est tt a fait normale, je poste ce petit message au cas ou y a qlq un qu'il l'utilise ^^ c'est un open source donc pas d copyright ^^
0
syranovic Messages postés 9 Statut Membre
 
cool ^^ merci beaucoup dariumis, c'est juste c'était bien l'espace la source de l'erreur, merci encore, donc voila je veux ajouter un tag résolu sauf que je ne sais pas comment ^^'.
0