Moteur de recherche pour base mysql

Eléphant du PHP | 174 Messages

06 juil. 2005, 21:38

Est ce correcte ?

Code : Tout sélectionner

SELECT nom, date, bande, mode FROM concours, bandes, modes LEFT JOIN concours_bande, concours_mode WHERE nom LIKE '$variable%'"; OR SELECT nom, date, bande, mode FROM concours, bandes, modes LEFT JOIN concours_bande, concours_mode WHERE date LIKE '$variable%'"; OR SELECT nom, date, bande, mode FROM concours, bandes, modes LEFT JOIN concours_bande, concours_mode WHERE bande LIKE '$variable%'" OR SELECT nom, date, bande, mode FROM concours, bandes, modes LEFT JOIN concours_bande, concours_mode WHERE mode LIKE '$variable%'";
que dois je faire ensuite si c'est ok

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

06 juil. 2005, 22:36

heu y'a vaguement une idée mais pourquoi répètes tu la même requête plusieurs fois avec un OR entre chaque ?

le modèle c'est un seul SELECT, et plusieurs conditions

ViPHP
pjl
ViPHP | 2119 Messages

06 juil. 2005, 22:54

Est ce correcte ?
Euh, tu sais que tu peux tester toi-même ta requête dans un client de ta base de données (PHPMyAdmin par ex si tu utilises MySQL) et cerise sur le gateau, tu auras même droit aux messages d'erreur qui t'aideront à débuger.

Elle est pas belle, la vie ?

Eléphant du PHP | 174 Messages

07 juil. 2005, 09:59

Bon voici mon nouveau code

Code : Tout sélectionner

SELECT nom, date, bande, mode FROM concours, bandes, modes LEFT JOIN concours_bande, concours_mode WHERE nom LIKE '$variable%' OR date LIKE '$variable%' OR bande LIKE '$variable%' OR mode LIKE '$variable%';
et voici le message d'erreur dans mysql :
(mot clé $variable remplacer par 160)
160 et enregister dans ma base
  • #1064 - Erreur de syntaxe pr�s de 'WHERE nom LIKE '160%'
    OR date LIKE '160%' OR bande LIKE '160%' ' � la ligne 1

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

07 juil. 2005, 10:03

regarde l'utilisation des jointures externes :
http://www.laltruiste.com/document.php? ... nture.html

Eléphant du PHP | 174 Messages

09 juil. 2005, 20:41

Dans la commande dois-je inclure la table concours_bandes ?

j'ai essayé d'adapter cette syntaxe à ma base

Code : Tout sélectionner

SELECT * FROM a,b LEFT JOIN c ON (c.key=a.key) LEFT JOIN d ON (d.key=a.key) WHERE b.key=d.key;
voir http://www.nexen.net/docs/mysql/annotee ... zation.php

mais je ne vois pas à quoi correspond c et d.
Modifié en dernier par elminio le 09 juil. 2005, 21:00, modifié 1 fois.

ViPHP
pjl
ViPHP | 2119 Messages

09 juil. 2005, 20:44

d'ou sors tu cet exemple ? :shock: :shock:

Eléphant du PHP | 174 Messages

09 juil. 2005, 21:09

du site de nexen

ViPHP
pjl
ViPHP | 2119 Messages

09 juil. 2005, 23:15

un SELECT * sur une double jointure et on parle d'optimisation ? :?

Eléphant du PHP | 174 Messages

09 juil. 2005, 23:46

ça ne répond pas à mon problème :?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

10 juil. 2005, 00:09

Je ferai quelque chose comme ça, mais si t'es pas à l'aise en SQL, faire une requête sur pleins de choses à la fois, en utilisant les jointures externes, c'est peut-être pas le mieux.

C'est une proposition donc, à tester pour voir si ça marche...

Code : Tout sélectionner

SELECT c.nom, c.date, b.bande, m.mode FROM concours c, bandes b, modes m, concours_bande c_b, concours_mode c_m WHERE concours_bande, concours_mode WHERE bande LIKE '$variable%'" WHERE c.id_concours = c_b.id_concours AND c_b.id_bande = b.id_bande AND c.id_concours = c_m.id_concours AND c_m.id_mode = b.id_mode AND (b.bande LIKE '$variable%' OR c.date LIKE '$variable%' OR m.mode LIKE '$variable%');
et pour répondre à ta question :
mais je ne vois pas à quoi correspond c et d.
c et d sont des tables

Mammouth du PHP | 19672 Messages

10 juil. 2005, 00:15

...c et d sont des tables
On devrait dire des alias : quand tu fais "...FROM table t ...", "t" est un alias qui peut ensuite être utilisé pour représenter "table", c'est simplement plus rapide à écrire c'est très pratique.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 174 Messages

10 juil. 2005, 11:44

Petite question concernant ton post ouckileou.
Tu ajoutes dans la close SELECT c.nom,
pour le c. je comprend que s'est pour identifier la table concours, mais est ce que la base de donnée détecte se rajout idem pour la close FROM avec c et dans la close where avec c_b, etc ...

Mammouth du PHP | 19672 Messages

10 juil. 2005, 11:56

C'est même pour ça qu'on aliase les noms de table.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 174 Messages

10 juil. 2005, 12:33

D'après ce que tu dis c'est oui