Nom de table variable

Résolu
minet5 Messages postés 16 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 15 octobre 2008 - 19 sept. 2008 à 08:59
cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009 - 19 sept. 2008 à 15:26
bonjour,

cela fait 2 jours que je ne trouve pas la solution et je viens a votre aide!
je crée une table dont le nom est concatener 'commandex' ou x est une variable.jusque la pas de probleme!
par contre je n arrive pas a faire de requete de la forme SELECT * FROM $commandex
mon code :

$num =  $_GET['variable'];
echo "$num"; // retourne 105 qui est la bonne valeur  d'une variable postée
$num1 =  "commande".$num; // retourne 'commande105' le bon nom de ma table que j'ai créer

mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");

$result = mysql_query("SELECT * FROM ' $num1 ' ");
// Recuperation des resultats
while($row = mysql_fetch_row($result)){   //ligne 60
$num_commande = $row[0];
$ref_client = $row[1];
......

mais voila j ai un message d'erreur :

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\wamp\www\commandes.php on line 60

si je met "SELECT * FROM commande105 " cela marche bien!

mon probleme vient donc de l'ecriture de la requete mais j ai beau esseyer toutes les syntaxes que j ai pu trouver donc je pense que le probleme ne vienne pas de la syntaxe mais plutot de la concatenation!

Auriez vous une solution

merci!

le galerien

31 réponses

cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
19 sept. 2008 à 15:14
Bin ouai je sais pas .. en effet c'est byzarre mais c'étais pas propre du fait que si tu appelais ta page sans paramètre dans l'url et bien ton code tombait à l'eau

N'oubli pas le tag "Résolu". Merci
3
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 26
19 sept. 2008 à 10:57
SELECT * FROM ' $num1 ' ==> ça va te donner une requête du genre SELECT * FROM ' commande105 '

essaye $result = mysql_query("SELECT * FROM $num1");
ou
$result = mysql_query("SELECT * FROM".$num1);
0
minet5 Messages postés 16 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 15 octobre 2008
19 sept. 2008 à 11:09
non toujours le meme probleme mais je t avouerai que je n avais pas encore esseyer la syntaxe :
("SELECT * FROM".$num1)

je pense que le probleme vient de la concatenantion :
$num1 =  "commande".$num;
tu ne pense pas?
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 26
19 sept. 2008 à 11:23
Rajoute avant ton while le code suivant :
if (!$result) {
    die('Requête invalide : ' . mysql_error());
}

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
minet5 Messages postés 16 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 15 octobre 2008
19 sept. 2008 à 11:31
ok je vois ce que tu veux dire ca me donne:

pour:
$result = mysql_query("SELECT * FROM $num1");

ca donne:
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 '

pour:
$result = mysql_query("SELECT * FROM".$num1);
ca donne:
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 'FROM

le probleme est donc sur la comprehension du $num1!!??
0
cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
19 sept. 2008 à 11:33
+1 pour laurent1024.

Mais dans ta requête il faut bien mettre un espace aussi après le le FROM :

$res = mysql_query("SELECT * FROM ".$num1." ; ");

Et moi je rajoute tout le temps un ";" à la fin pour faire bien propre ... :D
0
minet5 Messages postés 16 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 15 octobre 2008
19 sept. 2008 à 11:52
de meme!

copier/coller de ton code avec un espace donc, et j'obtiens le meme message d erreur:

"  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 '  "

arf!
0
cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
19 sept. 2008 à 12:02
Hum hum .... et essayes ça, j'avais eu un souci similaire il y a un peu de temps :

$res = mysql_query("SELECT * FROM `".$num1."` ; ");
0
minet5 Messages postés 16 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 15 octobre 2008
19 sept. 2008 à 12:06
si je fais un
$num =  $_GET['variable'];
echo "$num"; // retourne 105
$num1 =  "commande".$num;
echo "$num1";// retourne 'commande105'
$result = mysql_query("SELECT * FROM $num1");
cela ne fonctionne pas: message d'erreur

je reprends en faisant
$num1 = 'commande105';
$result = mysql_query("SELECT * FROM $num1");

et ca marche!!! je ne comprends plus
0
minet5 Messages postés 16 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 15 octobre 2008
19 sept. 2008 à 12:08
on avance j ai l impression

message de ton cod [../auteur/MIKE1310/1137126.aspx mike1310]:
Requête invalide : Can't find file: '.\affaires\commande105
0
cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
19 sept. 2008 à 12:10
Et bien la c'est très clair .... c'est qu'il te manque un fichier situé dans .\affaire\commande105 ...

est-ce bien la qu'il faut aller ? Est-tu sûr à 100% que dans $num1 tu as bien seulement "commande105" et non pas "affaire\commande105" ou autre ..?
0
cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
19 sept. 2008 à 12:27
ou alors la requete à fonctionner et c'est plus loin dans ton code que ça plante
0
minet5 Messages postés 16 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 15 octobre 2008
19 sept. 2008 à 12:31
sur a 100% que je n ai que commande105
'affaires' c'est le nom de ma base de données dans laquelle ma table 'commande105' est présente
0
minet5 Messages postés 16 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 15 octobre 2008
19 sept. 2008 à 13:39
je craqueon est pas loin mais je ne vois pas la solution, tu aurai une autre idée mike1310 ?

$result = mysql_query("SELECT * FROM `".$num1."` ; ");
Requête invalide : Can't find file: '.\affaires\commande105

$result = mysql_query("SELECT * FROM affaires.`".$num1."` ; ");
Requête invalide : Can't find file: '.\affaires\commande105

$result = mysql_query("SELECT * FROM `affaires`.``".$num1."`` ; ");
Requête invalide : Incorrect table name ''

et mon fichier commande105.frm existe bien dans ma base affaires!!!
0
cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
19 sept. 2008 à 14:05
et tu me dis que tu fais directement "SELET * from commande105" ça marche ????

le problème viens bien de ton $num1 .... est ce que par hasard dans $num1 tu n'aurais pas un truc comme :
Commande105 ou comande105 ou un truc tout con qui fait que ça trouve pas la table ? $num1, est ce bien une string ?
0
minet5 Messages postés 16 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 15 octobre 2008
19 sept. 2008 à 14:08
'commande105' j ai verifier l'orthographe 20 fois  mais pas d'erreur la dessus helas

la requete "SELET * from commande105" marche nikel

par contre pour le fait que ce soit une string j ai un doute!

$num =  $_GET['variable'];
echo "$num"; // retourne '105'
$num1 =  "commande".$num;
echo "$num1"; // retourne 'commande105'

ce doit etre une string si je procede ainsi non?
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 26
19 sept. 2008 à 14:11
et un var_dump($numl) ça te donne quoi ?
0
minet5 Messages postés 16 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 15 octobre 2008
19 sept. 2008 à 14:13
ca me retourne NULL
0
cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
19 sept. 2008 à 14:16
Ouhla mais attend !!!! y'aurais pas une différence entre $numl et $num1   ...... $numL (et la lettre "L") et $num1 (le chiffre "un") :D :D
0
cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
19 sept. 2008 à 14:17
Fait un var_dump($num1);
0