[PHP] CREATE TABLE avec un nom variable

Fermé
JB - 4 mars 2006 à 12:12
Padoo Messages postés 109 Date d'inscription jeudi 21 juillet 2005 Statut Membre Dernière intervention 6 février 2009 - 4 mars 2006 à 17:37
Bonjour !

J'ai un certain nombre de table à créer du type

x0
x10
x20
x30
etc...

du type
y
img
lien

chaque table contenant
yo+img+lien
y10+img+lien
y20+img+lien
etc...

en tout j'ai 100 table X à créer avec dans chaque, 100 entrées Y

Je n'ai pas envie de faire ca manuellement et j'ai donc fais un petit script :

<?
$x=0;
$y=0;

while($x < 1000)
	{
	CREATE TABLE "x".$x (
	y VARCHAR (5) not null , 
	image VARCHAR (255) not null , 
	alt VARCHAR (255) not null , 
	lien VARCHAR (255) not null,
	PRIMARY KEY (id))
	
	while($y < 1000)
		{
		mysql_query("INSERT into x$x VALUES('$y', '', 'Emplacement disponnible', '')") or die('Erreur 2 !'.$result.'<br>'.mysql_error());
		
		$y = $y+10;
		}
	$x = $x+10;
	}
?>


voici l'erreur que j'obtient :

Parse error: parse error, unexpected T_STRING in /var/www/free.fr/9/f/nilujeweb/tab2.php on line 7

la ligne 7 étant :

CREATE TABLE "x".$x (


N'est-il pas possible de créer une table avec un nom variable ?
Merci.

3 réponses

Padoo Messages postés 109 Date d'inscription jeudi 21 juillet 2005 Statut Membre Dernière intervention 6 février 2009 18
4 mars 2006 à 16:01
Bonjour,

je pense que c'est possible, mais tu devrais creer une variable locale contenant ton nom de table que tu modifie avant chaque requete et que tu utilise ensuite directement.

En plus tu avait oublié de lancer ta requete CREATE TABLE alors l'erreur vient peut-être tout simplement de là...

Avec un truc du style:
<?
$x=0;
$y=0;

while($x < 1000)
{
$nom_table='x'.$x;
$req=mysql_query("CREATE TABLE ".$nom_table." (
y VARCHAR (5) not null ,
image VARCHAR (255) not null ,
alt VARCHAR (255) not null ,
lien VARCHAR (255) not null,
PRIMARY KEY (id))");

while($y < 1000)
{
$req=mysql_query("INSERT into '$nom_table' VALUES('$y', '', 'Emplacement disponnible', '')") or die('Erreur 2 !'.$result.'<br>'.mysql_error());

$y = $y+10;
}
$x = $x+10;
}
2
oups, je n'avais effectivement pas lancé la requete...
toutefois tu as raison j'ai quand meme dut créer une variable intérmédiaire.

j'ai encore une erreur

voici le code modifié :

$x=0;
$y=0;

while($x < 1000)
	{
	$tempx = "x".$x;
	$tempy = "y".$y;
	mysql_query("CREATE TABLE ".tempx." (
	y VARCHAR (5) not null , 
	image VARCHAR (255) not null , 
	alt VARCHAR (255) not null , 
	lien VARCHAR (255) not null,
	PRIMARY KEY (id))")  or die('Erreur CREATE TABLE $tempx !'.$result.'<br>'.mysql_error());

	while($y < 1000)
		{
		mysql_query("INSERT into x$x VALUES('$y', '', 'Emplacement disponnible', '')") or die('INSERT INTO x !'.$result.'<br>'.mysql_error());
		$y = $y+10;
		}
	$x = $x+10;
	}


erreur :

Erreur CREATE TABLE $tempx !
Key column 'id' doesn't exist in table

il ne veut pas créer la table x0, x10, etc..
la deuxieme ligne du msg d'erreur je ne comprend pas bien...
0
Padoo Messages postés 109 Date d'inscription jeudi 21 juillet 2005 Statut Membre Dernière intervention 6 février 2009 18
4 mars 2006 à 17:20
Il faut que tu indique à mysql la clé primaire de la table. C'est un champ dont tu indique le nom à PRIMARY KEY (id). Il faut donc soit que tu indique l'un des champs de ta table, soit que tu rajoute un champ id du style
id INT(11) auto-increment NOT NULL,

et quand tu remplis ta table, tu laisse '' à l'endroit de l'id car c'est un auto-increment

Voila voila
0
Padoo Messages postés 109 Date d'inscription jeudi 21 juillet 2005 Statut Membre Dernière intervention 6 février 2009 18
4 mars 2006 à 17:37
Autre chose, si tu ne réinitialise pas ton y dans la premiere boucle alors dès la deuxième table, rien ne rentrera dedans meme si ton code s'exécute sans erreurs.
0

Discussions similaires