jointures problemes [ php ] - Programmation
Marsh Posté le 03-09-2002 à 17:20:56
bozocarzu a écrit a écrit : C'est quoi le WHERE qui est a la fin ?? |
bein c normal c construi comme ça ya la suite apres ça marche quand ya pas de jointures donc c pas ca
voila le code en fait :
Code :
|
Marsh Posté le 03-09-2002 à 17:36:13
tu pourrais faire un echo htmlentites($query) avant de balancer la requête pour voir sa tronche ? (peut être uin pb d'espace ou de virgule selon les argumetns passés)
ensuite tu la colle dans phpmyadmin pour voir un peu quel est le problème
bozocarzu >> bin c'est qu'une requête SQL tout ce qu'il y de plus normale en ce moment j'tape les même mais avec jointures sur tables, ça tourne super bien.
Marsh Posté le 03-09-2002 à 17:38:32
Oui, se que je veut dire par fou, c'est la façon dont elle est construite !
Marsh Posté le 03-09-2002 à 17:41:05
bin pour un moteur de recherche t'as pas trop le choix, faut la modifier selon le formulaire de recherche et c'est pas toujours très drôle
Marsh Posté le 03-09-2002 à 17:42:33
pour mon moteur de recherche d'article dans une boutique en ligne :
Code :
|
Marsh Posté le 03-09-2002 à 17:52:20
bozocarzu a écrit a écrit : Si sa marche !!! |
Marsh Posté le 03-09-2002 à 17:56:49
Du moment que ta requete fonctionne, temps meiux, mais si il y as une erreur dans ton code, bonne chance pour la trouver !!
Marsh Posté le 03-09-2002 à 18:01:36
bah.. je fait que traiter les champs du moteur de recherche un par un, une fois la requête générée, tu la teste et tu vois très vite d'ou peux venir l'erreur (en fonction du msg MySQL).
pour le problème original, je pencherais pour un WHERE en trop), sans conditions si jamais rien n'est coché dans le formulaire, mais il faurdrait vrament voir la requête entière après traitement du formulaire.
Marsh Posté le 03-09-2002 à 18:17:31
Il il devrais faire un echo"$query" pour voir a quoi elle ressemble !
Marsh Posté le 03-09-2002 à 18:29:35
Question con, c'est quoi la base de donnée utiliser?
Si c'est mysql, t'as pas besoin de chercher lus loin, mysql ne sait pas utiliser des jointure de type "LEFT join" (et autres jointures dites non parfaites).
Marsh Posté le 03-09-2002 à 18:36:12
bozocarzu a écrit a écrit : Oui c'est mysql qu'utilise ludo |
Alors il va faloir qu'il ce démerde autrement pour obtenir le même réultat que ce qu'il aurait eu avec sa requête.
C'est chiant de devoir changer de logique dans une partie d'un programme pour simuler une jointure partielle mais a ma conaissance, avec mysql, il y a pas d'autre moyen.
Marsh Posté le 03-09-2002 à 18:37:48
uuh.. j'utilise des LEFT JOIN à gogo dans mes script et ça fonctionne super bien...
Marsh Posté le 03-09-2002 à 18:40:34
Sh@rdar a écrit a écrit : uuh.. j'utilise des LEFT JOIN à gogo dans mes script et ça fonctionne super bien... |
Même avec mysql ???
Si c'est le cas, j'en suis vraiment étoné.
Va faloir que j'ailles voir sur free.fr et multimania, si ca marche aussi chez eux.
Marsh Posté le 03-09-2002 à 18:45:19
J'utilise une vieille version en plus (3.23.41) ça fait un moment que c'est supporté, y a qu'a jeter un coup d'oeil à la doc :
MySQL utilise les syntaxes suivantes pour les commandes de JOIN:
table_reference, table_reference
table_reference [CROSS] JOIN table_reference
table_reference INNER JOIN table_reference
table_reference STRAIGHT_JOIN table_reference
table_reference LEFT [OUTER] JOIN table_reference ON conditional_expression
table_reference LEFT [OUTER] JOIN table_reference USING (column_list)
table_reference NATURAL LEFT [OUTER] JOIN table_reference
{ oj table_reference LEFT OUTER JOIN table_reference ON conditional_expression }
Marsh Posté le 03-09-2002 à 18:49:35
Sh@rdar a écrit a écrit : J'utilise une vieille version en plus (3.23.41) ça fait un moment que c'est supporté, y a qu'a jeter un coup d'oeil à la doc : MySQL utilise les syntaxes suivantes pour les commandes de JOIN: table_reference, table_reference table_reference [CROSS] JOIN table_reference table_reference INNER JOIN table_reference table_reference STRAIGHT_JOIN table_reference table_reference LEFT [OUTER] JOIN table_reference ON conditional_expression table_reference LEFT [OUTER] JOIN table_reference USING (column_list) table_reference NATURAL LEFT [OUTER] JOIN table_reference { oj table_reference LEFT OUTER JOIN table_reference ON conditional_expression } |
Alors autant pour moi.
Du coup, je pourais faire certains trucs plus facilement que ce que je croyais.
Marsh Posté le 03-09-2002 à 19:22:52
whow merci pour vos réponses...
ALors donc le LEFT join si ça marche tres bien avec touts mes autres scripts mais là avec je sais pas pk il veut pas.
J'essaye tt de suite htmlentites($query) et je vous tiens au courant
Marsh Posté le 03-09-2002 à 19:30:31
bon n'y a t il pas un autre moyen de faire des jointures parcequ'aparement ca veut pas passer
Marsh Posté le 03-09-2002 à 20:27:50
ReplyMarsh Posté le 03-09-2002 à 20:40:34
bon j'ai recolé le tout et ca marche comme ca :
Code :
|
Marsh Posté le 03-09-2002 à 21:28:55
ludo2604 a écrit a écrit : bon j'ai recolé le tout et ca marche comme ca :
|
euh ... y a rien a pres le where ?
Marsh Posté le 03-09-2002 à 22:48:17
HappyHarry a écrit a écrit : euh ... y a rien a pres le where ? |
nan mais à la ligne OUI
Marsh Posté le 03-09-2002 à 22:48:55
ludo2604 a écrit a écrit : nan mais à la ligne OUI |
tu veux pas afficher la requete avant qu'elle soit executée, comme ca a deja ete demandé ?
Marsh Posté le 03-09-2002 à 23:01:19
HappyHarry a écrit a écrit : tu veux pas afficher la requete avant qu'elle soit executée, comme ca a deja ete demandé ? |
bah c bon ça marche maintenant il me reste un dernier truc à faire si tu peux m'aider...
bon ca ca compte tout une table: count(*)
mais quand on a des jointures dans la requete comment je peux compter qu'une tble?
Marsh Posté le 04-09-2002 à 11:38:59
ludo2604 a écrit a écrit : bah c bon ça marche maintenant il me reste un dernier truc à faire si tu peux m'aider... bon ca ca compte tout une table: count(*) mais quand on a des jointures dans la requete comment je peux compter qu'une tble? |
count(table.*) ?
Mais ca te doneras soit le nombre de ligne retourné par la requête, soit le nombre de ligne de la table spécifié qui sont retourné par la requête, soit le nombre de ligne de la table, soit le nombre de ligne de la table qui corespondent à chaque ligne retourné par la requête (s'il n'y a que des distinct, des sum et autres trucs du genre sur une des autres tables de la requête).
Entre les trois permières possibilités, je sais plus quelles sont celles qui sont parfois retrouné par les requêtes, pour la dernière, je sais qu'on peut arrivé à avoir ce résultat là mais c'est parfois dur d'y arriver.
Marsh Posté le 03-09-2002 à 17:11:10
saut,
c'est pour un moteur de recherche, je voudrai mettre des jointures car j'ai besoin de plusieurs tables...
Voila ce que j'ai mis pour le debut de la requete :
cette meme requete fonctionne pourtant correctement avec un autre script mais là ca passe pas bizzare.....
---------------
Make Portraits, Not War!