Page 1 sur 2

Create table plusieurs d'un coup

Posté : 14 déc. 2010, 01:47
par olimart23
Allo, 1er post mais pas le dernier je pense.

J'essaie de créer 2 tables. Tous les exemples montrent la création d'une seule table. La 1ère table se créée bien mais la 2ème ne se créée pas du tout. Pas d'erreur de syntaxe (enfin pas au rendu).
// Create table
mysql_select_db($databasename, $connect);
$tablecreation = "CREATE TABLE users
(
ID int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(ID),
Name varchar(30),
Username varchar(20),
Password varchar(32),
UserType varchar(35),
modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";

"CREATE TABLE settings
(
ID int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(ID),
Name varchar(30),
Username varchar(20),
Password varchar(32),
UserType varchar(35),
modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";

if (mysql_query($tablecreation,$connect)) {
  echo '<p class="success">' ."Table created". '</p>';

Re: Create table plusieurs d'un coup

Posté : 14 déc. 2010, 02:03
par stealth35
ta variable n'est pas bonne fais un

echo $tablecreation; et tu comprendras :wink:

Re: Create table plusieurs d'un coup

Posté : 15 déc. 2010, 07:30
par olimart
Merci pour ta réponse malheureusement mon niveau étant plus que débutant je ne saisis pas la subtilité. Si je mets echo $tablecreation alors seule la 1ère table apparaît mais aucune idéé comment inclure la 2ème.

Je ne sais même pas si c'est comme ça qu'il faut s'y prendre, si c'est ce qui est recommandé, si je dois fermer les guillemets après le 1er create table et les rouvrir ensuite ou si une seule paire de guillemets suffisent...

Enfin question subsidiaire, comment stocker dans un fichier à part les instructions pour crééer la BDD et éviter de surcharger mon fichier. Idéalement je lance l'instruction ici qui exécute la création des tables à partir d'un autre fichier et renvoie le message erreur/confirmation sur la page vue. Qu'est-ce qui est préconisé?

Merci par avance.
ta variable n'est pas bonne fais un

echo $tablecreation; et tu comprendras :wink:

Re: Create table plusieurs d'un coup

Posté : 15 déc. 2010, 11:14
par stealth35
normale regarde bien ta chaine tes quotes ne sont pas bon

Re: Create table plusieurs d'un coup

Posté : 15 déc. 2010, 18:06
par olimart
Je veux bien mais je n'ai aucune idée de comment elles devraient être mises.
Quelle est la syntaxe à respecter?
normale regarde bien ta chaine tes quotes ne sont pas bon

Re: Create table plusieurs d'un coup

Posté : 15 déc. 2010, 18:09
par stealth35
Je veux bien mais je n'ai aucune idée de comment elles devraient être mises.
Quelle est la syntaxe à respecter?
normale regarde bien ta chaine tes quotes ne sont pas bon
relis bien ton code tu vois bien que tu fermes ta chaine avec ";

Re: Create table plusieurs d'un coup

Posté : 15 déc. 2010, 18:37
par olimart
Voici l'erreur Error creating table: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE settings ( ID int NOT NULL AUTO_INCREMENT, PRIMARY KEY(ID), Name v' at line 14

Mon code révisé (sachant que je ne sais toujours pas si je dois mettre un seul "; )
// Create table
$tablecreation = "CREATE TABLE users
(
ID int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(ID),
Name varchar(30),
Username varchar(20) UNIQUE,
Password varchar(32),
UserType int,
Modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (UserType) REFERENCES Settings(ID)
) CHARACTER SET utf8


CREATE TABLE settings
(
ID int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(ID),
Name varchar(30),
Username1 varchar(20) UNIQUE,
Password varchar(32),
UserType int(2),
Modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (UserType) REFERENCES Settings(ID)
) CHARACTER SET utf8";

if (mysql_query($tablecreation,$connect)) {
  echo '<p class="success">' ."Table created". '</p>';
Je veux bien mais je n'ai aucune idée de comment elles devraient être mises.
Quelle est la syntaxe à respecter?
normale regarde bien ta chaine tes quotes ne sont pas bon
relis bien ton code tu vois bien que tu fermes ta chaine avec ";

Re: Create table plusieurs d'un coup

Posté : 15 déc. 2010, 18:54
par stealth35
faut garder ton ; par contre :wink:

Re: Create table plusieurs d'un coup

Posté : 15 déc. 2010, 19:00
par olimart
On va ya arrriver mais pas encore cette fois-ci.
Si je mets le code ci-dessous alors j'ai une erreur de syntaxe et la page ne peut même pas être charrgée.
// Create table
$tablecreation = "CREATE TABLE users
(
ID int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(ID),
Name varchar(30),
Username varchar(20) UNIQUE,
Password varchar(32),
UserType int,
Modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (UserType) REFERENCES Settings(ID)
) CHARACTER SET utf8;


CREATE TABLE settings
(
ID int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(ID),
Name varchar(30),
Username1 varchar(20) UNIQUE,
Password varchar(32),
UserType int(2),
Modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
) CHARACTER SET utf8;"
faut garder ton ; par contre :wink:

Re: Create table plusieurs d'un coup

Posté : 15 déc. 2010, 20:07
par stealth35
oui t'as pas mis le ; a la fin de ta chaine, y'en a dans le SQL mais aussi dans le PHP, c'est que des erreurs d'inattention

Re: Create table plusieurs d'un coup

Posté : 15 déc. 2010, 20:32
par olimart
Merci. Je comprends mieux. Par contre ça ne fonctionne toujours pas. Ça marche avec 1 table mais avec 2 non (je promets que je ne le fais pas exprès)

L'erreur dit
Error creating table: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE settings ( ID int NOT NULL AUTO_INCREMENT, PRIMARY KEY(ID), Name' at line 14

Est-ce le champ Name qui pose problème? Si ou pourquoi ça fonctionne avec la première table?

Le code.
// Create table
//mysql_select_db($databasename, $connect);
$tablecreation = "CREATE TABLE users
(
ID int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(ID),
Name varchar(30),
Username varchar(20) UNIQUE,
Password varchar(32),
UserType int,
Modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (UserType) REFERENCES Settings(ID)
) CHARACTER SET utf8;

CREATE TABLE settings
(
ID int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(ID),
Name varchar(30),
Username1 varchar(20) UNIQUE,
Password varchar(32),
UserType int,
Modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
) CHARACTER SET utf8;"  ;

if (mysql_query($tablecreation,$connect)) {
  echo '<p class="success">Table created</p>';
oui t'as pas mis le ; a la fin de ta chaine, y'en a dans le SQL mais aussi dans le PHP, c'est que des erreurs d'inattention

Re: Create table plusieurs d'un coup

Posté : 15 déc. 2010, 20:39
par stealth35
je pense que ca doit venir de ta virgule après AUTO_INCREMENT, PRIMARY KEY(ID) va avec ton champs

Re: Create table plusieurs d'un coup

Posté : 15 déc. 2010, 20:49
par olimart
J'ai légèrement réarrangé les choses pour éviter le problème de virgule mais pas mieux
$tablecreation = "CREATE TABLE users
(
ID int NOT NULL AUTO_INCREMENT,
Name varchar(30),
Username varchar(20) UNIQUE,
Password varchar(32),
UserType int,
Modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY(ID)
) CHARACTER SET utf8;

CREATE TABLE settings
(
ID int NOT NULL AUTO_INCREMENT,
Name varchar(30),
Username1 varchar(20) UNIQUE,
Password varchar(32),
UserType int,
Modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY(ID)
) CHARACTER SET utf8;" ;


if (mysql_query($tablecreation,$connect)) {
  echo '<p class="success">Table created</p>';
je pense que ca doit venir de ta virgule après AUTO_INCREMENT, PRIMARY KEY(ID) va avec ton champs

Re: Create table plusieurs d'un coup

Posté : 15 déc. 2010, 20:53
par stealth35
mais non c'est comme :
ID int NOT NULL AUTO_INCREMENT PRIMARY KEY(ID),
pourquoi avoir mis les PRIMARY KEY a la fin ? tu connais pas le SQL ?

Re: Create table plusieurs d'un coup

Posté : 15 déc. 2010, 21:03
par olimart
Non je ne connais pas le SQL. Wordpress met la clé primaire à la fin donc je ne voyais pas le problème. Et ça ne fonctionne pas. J'ai viré la clé primaire temporairement mais ce n'Est pas ça encore.
$tablecreation = "CREATE TABLE users
(
ID int NOT NULL auto_increment,
Name varchar(30),
Username varchar(20) UNIQUE,
Password varchar(32),
UserType int,
Modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
) CHARACTER SET utf8;

CREATE TABLE settings
(
ID int NOT NULL auto_increment,
Name varchar(30),
Username1 varchar(20) UNIQUE,
Password varchar(32),
UserType int,
Modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) CHARACTER SET utf8;" ;


mais non c'est comme :
ID int NOT NULL AUTO_INCREMENT PRIMARY KEY(ID),
pourquoi avoir mis les PRIMARY KEY a la fin ? tu connais pas le SQL ?