Problème de requete PHP
lili
-
tarek_dotzero Messages postés 834 Statut Membre -
tarek_dotzero Messages postés 834 Statut Membre -
Bonjour,
J'ai un probleme concernant une requete assez complexe.
Tout d'abord, je récupère une variable via l'URL qui est la suivante :
$num = $_GET["numMachine"] ;
Ensuite, je récupère le nom de la machine correspondante :
$machine_conso = "Select nom_machine
from machine_conso
where num_machine=".$num;
Puis enfin, je veux sélectionner les produits correspondants a la machine mais qui se trouve sur une autre table :
$sql2 = "SELECT *
FROM voir_conso
where type_machine_conso = ".machine_conso;
J'ai fait des tests sur la 1ère requete, et elle fonctionne très bien. C'est la seconde qui me pose problème. Est-ce un problème de variable ? Car en effet, quand j'affiche $machine_conso, elle ne m'affiche pas le nom de la machine mais "Ressource $id 4".
Pourriez vous m'aidez ?
Merci beaucoup
J'ai un probleme concernant une requete assez complexe.
Tout d'abord, je récupère une variable via l'URL qui est la suivante :
$num = $_GET["numMachine"] ;
Ensuite, je récupère le nom de la machine correspondante :
$machine_conso = "Select nom_machine
from machine_conso
where num_machine=".$num;
Puis enfin, je veux sélectionner les produits correspondants a la machine mais qui se trouve sur une autre table :
$sql2 = "SELECT *
FROM voir_conso
where type_machine_conso = ".machine_conso;
J'ai fait des tests sur la 1ère requete, et elle fonctionne très bien. C'est la seconde qui me pose problème. Est-ce un problème de variable ? Car en effet, quand j'affiche $machine_conso, elle ne m'affiche pas le nom de la machine mais "Ressource $id 4".
Pourriez vous m'aidez ?
Merci beaucoup
Configuration: Windows XP Internet Explorer 6.0
11 réponses
-
C'est or die (mysql_error()); qu'il faut rajouter si on veut un vrai diagnostique de l'erreur.
Mais la première requête de lili s'exécute bien puisqu'il obtient bien une ressource.
Quand à la seconde, on ne sait même pas si elle est exécutée, il est tellement avare en renseignements qu'il ne nous donne pas la ligne de code où $sql2 est appelé. Il n'y a pas d'erreur de syntaxe dans ce qu'il nous montre, et c'est pour ça que j'essaye de tirer des renseignements sur ce qu'il y a vraiment dans son script. -
Salut, tu devrais mieu regarder comment on attaque une bdd avec php...
http://www.manuelphp.com/cours/cours.php?id=37 -
Bonjour
Tu ne nous dis pas tout. Avec ce que tu donnes, $machine_conso est une chaîne de caractères représentant une requête, et pas une ressource.
Je suppose donc qu'en fait tu as
$machine_conso = mysql_query("Select nom_machine
from machine_conso
where num_machine=".$num);
là, $machine_conso est bien une ressource
Et pour extraire le contenu de cette ressource, il faut utiliser (par exemple) mysql_fetch_array :
$ligne=mysql_fetch_array($machine_conso);
et le champ que tu as demandé est dans $ligne['nom_machine']
d'où (si c'est bien nom_machine ton type de machine)
$sql2 = "SELECT *
FROM voir_conso
where type_machine_conso = '$ligne[nom_machine]'"; -
Merci pour ton information. J'ai essayé mais cela ne résoud pas le problème.
En effet, j'ai bien une ressource qui est la suivante :
$requete = mysql_query($machine_conso) ;
J'ai bien fais ce que tu m'as dit :
$ligne=mysql_fetch_array($requete);
$sql2 = "SELECT *
FROM voir_conso
where type_machine_conso = '$ligne[nom_machine]'";
Mais rien y fait. J'ai fais un test sur la requete, et c'est bien la requete qui a un problème. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Si type_machine_conso est du type varchar, ou text, ou blob, ou .... dans ta bdd, dans ton select faut que tu rajoute des <">...
-
Quels test fais tu ? Sur quelle requete ? Et quel problème en ressort-il ?
Car si tu fais un echo $requete, normal que ça t'affiche que c'est une ressource, puisque c'en est une. -
-
Ah Okay..
Bah j'affiche $requete pour voir ce qu'il m'affiche, et ça m'affiche Resource id #4.
Mais maintenant j'ai compris pourquoi. Il faut que je fasse un mysql_fetch_array ou object. Malheureusement cela ne marche toujours pas.
Je fais également un test sur $requete, voir si il me l'execute bien.
if ($requete) {...}else{...}
Mais ce n'est pas le cas.
Je suis dessus depuis ce matin. Est-ce une erreur de syntaxe ? -
-
Je fais également un test sur $requete, voir si il me l'execute bien.
if ($requete) {...}else{...}
Mais ce n'est pas le cas.
Il n'exécute ni le premier {...} ni le second ? ça m'étonnerait bien ! Si tu récupères bien une ressource, il doit exécuter le premier.
Est-tu sûr de comprendre ce que signifie ce test ? Et pourquoi ne montres-tu pas ce qu'il y a dans tes {...} ? Moins tu donnes d'informations (sauf les identifiants et les mots de passe bien sûr), plus il faudra de temps pour comprendre. -
Je ne maitrise pas vraiment le PHP, mais bon:
1. Pour vérifier la bonne exécution, les gens du PHP ajoute ce fameux| or die("Erreur");aprèsmysql_query
2. Il faut reprendre les étapes dès le début:
a. Connection à MySQL.
b. Sélection de la base.
c. Construction de la requête (par exemple $sql1) et puis l'afficher (pour vérifier la syntaxe sql etc etc)
d. Exécution de la requête$resultat = mysql_query($sql1);
e. Récupération du champs désiré (par fetsh array ou quelque chose comme ça).
f. Création d'un nouvelle requête (chaîne de caractères) $sql2 et l'afficher pour vérifier syntaxe etc etc
g. Exécution à nouveau
i. fetsh array à nouveau
Il faut pas mélanger $resultat avec $sql2