Erreur boolean : MySQL en cause ? [php] - PHP - Programmation
Marsh Posté le 17-08-2006 à 20:11:09
Ni l'un ni l'autre, to mysqli_query renvoit faux, probablement à cause d'une erreur dans la requête.
Tu sais, quand sur ce forum, on milite pour l'intégration de contrôle d'erreur dans le code, c'est pas par hasard
Marsh Posté le 17-08-2006 à 20:20:45
Globalement, la page fonctionne correctement quand tu spécifies aucun critère mais plante quand tu en mets certains ?
Marsh Posté le 17-08-2006 à 20:26:07
Faut dire que la dernière requête est zarb quand même, tu compares un id avec non pas la valeur venant d'un des selects mais avec un champ venant d'une autre table dont le nom contiendrait la valeur du select choisi, ça semble étrange comme raisonnement
Marsh Posté le 17-08-2006 à 20:35:14
parae -> J'avais notifié ou était l'erreur 103, mais finalement j'ai corrigé : il s'agit de la ligne 85 ici.
naceroth -> euh... argnhh, ne remue pas le couteau dans la plaie Je m'arrach les cheveux depuis cet apres-midi
EDIT : oups pb déconnexion depusi 10 minutes donc décalage de réponse
******************************************
parae -> oui voila, quand j'arrive sur ma page, comme le post n'a pas été envoyé (on le sait par un isset), on lit un second formulaire qui se trouve en-dessous de celui-ci.
Et ça fonctionne correctement.
Par contre quand je sélectionne des paramètres...
Marsh Posté le 17-08-2006 à 20:42:47
naceroth a écrit : Faut dire que la dernière requête est zarb quand même, tu compares un id avec non pas la valeur venant d'un des selects mais avec un champ venant d'une autre table dont le nom contiendrait la valeur du select choisi, ça semble étrange comme raisonnement |
je compare les ID contenus dans la table "voiture" avec les ID contenus dans les selects ?
Je ne vois pas comment faire autrement
Marsh Posté le 17-08-2006 à 20:55:36
Ouais, ça c'est la théorie, mais en pratique c'est pas ce que tu fais
Si tu fais un echo de ta dernière requête, en considérant que les ID sont numérique, ça donne :
Code :
|
je doute que ce soit ce que tu veux faire
Marsh Posté le 17-08-2006 à 21:00:19
OK, je crois comprendre : c'est une syntaxe nimportnawak que j'ai mise quoi ?
Si je fais ça logiquement ça devrait marcher non ? :
Code :
|
Parce-que ça ne marche pas non plus
Cé pa possib vivement que je ne sois plus débutant
Marsh Posté le 17-08-2006 à 21:09:08
Traite tes erreurs nom d'une pipe
Code :
|
et fait des echos de tes requêtes quand elles foirent, et surtout avec quels paramètres
Marsh Posté le 18-08-2006 à 18:39:23
Bon, j'ai traité toutes mes erreurs (j'ai affiché dans chaque cas les variables transmises, et il s'agit bien des ID).
j'ai remarqué aussi que lorsque je traite tous les champs, ça fonctionne.
J'en suis donc arrivé à la conclusion que le problème vient du fait que lorsque l'on ne sélectionne pas dans une liste, alors ça renvoie une valeur vide : on demande à mysql de chercher la marque/type/fabricant dont l'ID correspond à "rien".
Il faut donc que je remplace ce vide par quelque chose qui voudrait dire "tout", mais là je ne sais pas quoi employer ?
j'ai tenté de mettre les différentes combinaisons possibles dans des variables qui "personnalisent" la requete mysql, mais il y a des infos qui ne correspondent pas à ce qui semble demandé.
Ya pas plus simple que ma solution tordue ?
Marsh Posté le 18-08-2006 à 20:34:21
Voilà, j'ai refait ce qui n'allait pas et déjà, je n'ai plus aucun message d'erreur, et j'ai bien vérifié que les POST ne sont pas vides.
Cependant, si je ne remplis pas les 3 listes déroulantes, aucun résultat ne s'affiche.
Voici l'exemple d'UNE liste (puisque les autres sont exactement sur le meme modele, à part qu'elles s'appellent 'type', 'marque', fabricant') ainsi que la requete SQL :
Code :
|
Je pencherais pour un pb au niveau des jointures, mais quoi précisément
Marsh Posté le 19-08-2006 à 00:18:56
Bah non, à priori il y a pas de soucis avec les jointures, mais il sort d'où ce $id_fabriquant_all ?
A mon avis, tu te casses la tête à vouloir compliquer inutilement un truc simple pour caser tout en une requête, pourquoi tu fais pas simplement (en considérant que tu ajoutes une option 'tout' sélectionnée par défaut dans chaque select : <option value="tout" selected="selected">Tout</option> )
Code :
|
(sous réserve d'erreurs probable vu l'heure et l'absence d'éditeur php )
Marsh Posté le 17-08-2006 à 20:00:43
Bonsoir, voilà je vous explique le contexte :
ma page php génère des informations sur des voitures en fonctions des critères rentrés dans des listes de sélection (on choisit le type et/ou la marque et/ou le fabricant et/ou le modele).
La page apparaissant fonctionne bien (d'ailleurs elle liste tous les premiers modèles qu'elle trouve), mais lorsque je sélectionne un ou plusieurs critères, j'ai droit à un joli :
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in E:\Program Files\wamp\www\Formation PHP - Anaska\projet\site\inc_php\catalogue.inc.php on line 85
Je ne sais pas trop si le pb vient de php ou mysql, je pencherais plus sur mysql car c'est depuis que j'ai changé des paramètres dans les AND que ça n'affiche carrément plus rien.
Voici mon code :
Je n'ai pas trouvé d'infos pertinente, et ai testé la requete mysql dans phpmyadmin avec succès (en remplacant les $_POST par "ID".
Merci
Message édité par Funkpeck le 17-08-2006 à 20:16:04