Nom de table variable [Résolu]

Signaler
Messages postés
16
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
15 octobre 2008
-
Messages postés
232
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
31 juillet 2009
-
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

Messages postés
232
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
31 juillet 2009

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
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
24
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);
Messages postés
16
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
15 octobre 2008

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?
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
24
Rajoute avant ton while le code suivant :
if (!$result) {
    die('Requête invalide : ' . mysql_error());
}

Messages postés
16
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
15 octobre 2008

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!!??
Messages postés
232
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
31 juillet 2009

+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
Messages postés
16
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
15 octobre 2008

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!
Messages postés
232
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
31 juillet 2009

Hum hum .... et essayes ça, j'avais eu un souci similaire il y a un peu de temps :

$res = mysql_query("SELECT * FROM `".$num1."` ; ");
Messages postés
16
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
15 octobre 2008

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
Messages postés
16
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
15 octobre 2008

on avance j ai l impression

message de ton cod [../auteur/MIKE1310/1137126.aspx mike1310]:
Requête invalide : Can't find file: '.\affaires\commande105
Messages postés
232
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
31 juillet 2009

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 ..?
Messages postés
232
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
31 juillet 2009

ou alors la requete à fonctionner et c'est plus loin dans ton code que ça plante
Messages postés
16
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
15 octobre 2008

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
Messages postés
16
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
15 octobre 2008

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!!!
Messages postés
232
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
31 juillet 2009

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 ?
Messages postés
16
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
15 octobre 2008

'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?
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
24
et un var_dump($numl) ça te donne quoi ?
Messages postés
16
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
15 octobre 2008

ca me retourne NULL
Messages postés
232
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
31 juillet 2009

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
Messages postés
232
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
31 juillet 2009

Fait un var_dump($num1);