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
A voir également:
- Problème de requete PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Requete sql pix - Forum PHP
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Android
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ? ✓ - Forum Access
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.
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.
tarek_dotzero
Messages postés
834
Statut
Membre
122
Voilà, c'est ce que je voulais dire, c'est pour ça je lui ai demandé de revoir les étapes de l'exécution.
Salut, tu devrais mieu regarder comment on attaque une bdd avec php...
http://www.manuelphp.com/cours/cours.php?id=37
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]'";
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.
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.
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 ?
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.
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
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
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
1. Pour vérifier la bonne exécution, les gens du PHP ajoute ce fameux
| or die("Erreur"); après mysql_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