Probleme recuperation sql multicriteres dans module de recherche .

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme recuperation sql multicriteres dans module de recherche .

par zeus » 06 juin 2008, 09:35

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "SQL & Bases de données".
L'y était pas déjà ??? :oops:
Nan, il était dans "Autres" ;)
En plus, il était signalé :lol:

Re: Probleme recuperation sql multicriteres dans module de r

par cuisto44000 » 06 juin 2008, 09:09

3 choses :
- les 3 conditions sur le champ titre sont redondantes. En fait, la 3e englobe les deux premières. Donc, tu peux les retirer.
- Le SELECT * est à proscrire. Indique clairement les champs que tu veux récupérer.
- N'oublie pas d'extraire les variables de la chaîne de caractères.

Est-ce que cela fonctionne mieux avec ceci ?
$req_don = "SELECT *
            FROM   don
            WHERE  intitule='donne'
              AND  titre LIKE '%".$rens."%'";

$req_dem = "SELECT *
            FROM   don
            WHERE  intitule='demande'
              AND  titre LIKE '%".$rens."%'";
J'avais deja essayé, mais cela ne marchait pas, par contre j'ai trouvé la solution, il suffisait de regrouper les titre like "..."... par ( et ) hihi tout simple :

Code : Tout sélectionner

SELECT * FROM don WHERE intitule='donne' AND ( titre LIKE '$rens%' OR titre LIKE '%$rens' OR titre LIKE '%$rens%' ) et SELECT * FROM don WHERE intitule='demande' AND ( titre LIKE '$rens%' OR titre LIKE '%$rens' OR titre LIKE '%$rens%' )
Voilou, et sa marche tres bien ;) http://publicannonces.com/recherche.php pour tester

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par albat » 06 juin 2008, 08:29

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "SQL & Bases de données".
L'y était pas déjà ??? :oops:

par zeus » 06 juin 2008, 08:24

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "SQL & Bases de données".

Re: Probleme recuperation sql multicriteres dans module de r

par albat » 06 juin 2008, 08:08

3 choses :
- les 3 conditions sur le champ titre sont redondantes. En fait, la 3e englobe les deux premières. Donc, tu peux les retirer.
- Le SELECT * est à proscrire. Indique clairement les champs que tu veux récupérer.
- N'oublie pas d'extraire les variables de la chaîne de caractères.

Est-ce que cela fonctionne mieux avec ceci ?
$req_don = "SELECT *
            FROM   don
            WHERE  intitule='donne'
              AND  titre LIKE '%".$rens."%'";

$req_dem = "SELECT *
            FROM   don
            WHERE  intitule='demande'
              AND  titre LIKE '%".$rens."%'";

par d0m » 06 juin 2008, 08:06

salut,

à mon avis cela vient de la priorité des AND et OR dans ta requete : les AND ont priorités sur les OR
Ta requête est lu comme ceci :

selectionner les lignes de don
qui ont :
soit intitule='donne' et titre like '$rens%'
soit titre LIKE '%$rens'
soit titre LIKE '%$rens%'


il faut parentheser correctement la clause where.

Probleme recuperation sql multicriteres dans module de reche

par cuisto44000 » 05 juin 2008, 23:41

Bonjour à tous, j'ai une table dans ma base de donnée pour mon site d'annonces de dons d'objets http://publicannonces.com qui contient notemment les champs "titre" et "intitule" ; titre contient donc le titre de l'annonces, et intitule contient soit "donne" soit "demande" ces données ne peuvent se nommer que par ces deux mots car ils sont choisis au prealable dans une liste deroulante ...

Ma requete qui doit afficher uniquement les dons :

Code : Tout sélectionner

mysql_query("SELECT * FROM don WHERE intitule='donne' AND titre LIKE '$rens%' OR titre LIKE '%$rens' OR titre LIKE '%$rens%'");
Et celle qui n'est censée afficher que les emandes :

Code : Tout sélectionner

mysql_query("SELECT * FROM don WHERE intitule='demande' AND titre LIKE '$rens%' OR titre LIKE '%$rens' OR titre LIKE '%$rens%'");
je vous precise que $rens=$_POST['renseignements']; mais cela n'a pas d'importance dans mon probleme je pense.

Mon probleme c'est que les deux requetes affichent tous les resultats, quand je recherche dans les intitule='donne' sa me met aussi les resultats des intitule='demande' et vis-versa O_o donc j'avoue ne pas comprendre la, si quelqu'un peut m'aider sa serait sympa ;)

Merci par avance ;)

ps : pour tester : http://publicannonces.com/recherche.php