Rechercher : dans
Par :

[PHP] CREATE TABLE avec un nom variable

Dernière réponse le 4 mar 2006 à 17:37:11 JB, le 4 mar 2006 à 12:12:12 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « [PHP] CREATE TABLE avec un nom variable » dans :
SQL - Création de table Voir Le SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...
MySQL - Chargement d'un fichier texte dans une table VoirPour charger une fichier texte défini comme suit : $ tail /home/user1/test.txt 'nom1',1,9 'nom2',2,3 'nom3',3,54 'nom4',4,2 'nom5',5,9 Dans une table définie comme suit : CREATE TABLE chargertest ( ...
Javascript - Les tableaux VoirIntroduction à la notion de tableau Les variables de Javascript ne permettent de stocker qu'une seule donnée à la fois. Or, étant donné qu'il est souvent utile de manipuler de nombreuses données, le concept de variable se révéle parfois...
PHP - Créer un moteur de recherche VoirIdée générale Le moteur de recherche ci-dessous ne correspond qu'à une idée possible de moteur de recherche simple, ne gérant qu'un seul mot clé. Le concept du fonctionnement de ce moteur est de créer une base de donnée contenant les mots clés de...
PHP - Les variables VoirConcept de variable avec PHP Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois...

1

Padoo, le 4 mar 2006 à 16:01:02
  • +1

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;
}
Demain est un autre jour... Vivement demain !

Répondre à Padoo

2

JB, le 4 mar 2006 à 16:56:30

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...

Répondre à JB

3

Padoo, le 4 mar 2006 à 17:20:05

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 Demain est un autre jour... Vivement demain !

Répondre à Padoo

4

 Padoo, le 4 mar 2006 à 17:37:11

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. Demain est un autre jour... Vivement demain !

Répondre à Padoo