FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » [Résolu] Pb recherche multicritère sur une table Mysql
 

[Résolu] Pb recherche multicritère sur une table Mysql

Il y a 256 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : [Résolu] Pb recherche multicritère sur une table Mysql
 
Plus d'informations

Bonjour,
 
Depuis deux jous je me casse la tête sur un truc un peu idiot.
 
J'ai eu formulaire dont une partie fait appel a des cases a cocher :

Code :
  1. <input name="selectmarque[]" type="checkbox" value="CHEVROLET"/>CHEVROLET
  2. <input name="selectmarque[]" type="checkbox" value="CHRYSLER"/>CHRYSLER
  3. <input name="selectmarque[]" type="checkbox" value="CITROEN"/>CITROEN
  4. <input name="selectmarque[]" type="checkbox" value="DACIA"/>DACIA
  5. <input name="selectmarque[]" type="checkbox" value="FIAT"/>FIAT


Le résulat de la sélection est traité par un script de la facon suivante :

Code :
  1. $selectmarque = $_POST["selectmarque"];
  2. $nb = sizeof($selectmarque);
  3. foreach ($selectmarque as $valeur){
  4. for($i = 1; $i < $nb; $i++)
  5.         {
  6.           $separateur = $i != $nb - 1 ? "," : "";
  7. $chaine= "'".$valeur."'".$separateur;
  8. $expression = "idmarque IN (".$chaine." )";
  9. }
  10. }


Voila a mon problème. Normalement $expression devrait me retourner:  
idmarque IN ('CHEVROLET','CHRYSLER','CITROEN') si CHEVROLET, CHRYSLER et CITROEN sont selectionné dans le formulaire.
 
Mais voila $expression me retrourne plutot :
idmarque IN ('CHEVROLET','CHRYSLER','CITROEN','CHEVROLET','CHRYSLER','CITROEN','CHEVROLET''CHRYSLER''CITROEN')
 
Je pense que le probleme viens de ma bouche For qui me definie l'affichage de $separateur mais ou precisement là je séche !


Message édité par frederpe le 07-08-2006 à 12:46:21

zeb
Profil : Modérateur libre
Plus d'informations

http://site.voila.fr/zulu-echo-bravo/img/balisecodeppc.png

Plus d'informations

Sympa ce smiley  :o  
 
Pour frederpe : une solution très simple :
 

Code :
  1. $selectmarque = $_POST["selectmarque"];
  2. // Je met toutes les valeurs sélectionnées entre ' '
  3. foreach( $selectmarque as $id => $value )
  4. {
  5.   $selectmarque[$id] = "'" . $value . "'";
  6. }
  7. // Je join le tout avec des virgules entre chaque élément du tableau
  8. echo "idmarque IN ( " . join( $selectmarque , " , " ) . " )";


 
Ca devrait aller mieux comme ça  :jap:

Message cité 1 fois
Message édité par Orni le 07-08-2006 à 11:43:49
zeb
Profil : Modérateur libre
Plus d'informations

Citation :

Sympa ce smiley

Et en plus il fonctionne : dès que Fred a édité son post, Orni a posté une solution. Amis forumeurs, à méditer...

Plus d'informations

a écrit :

Sympa ce smiley  :o  
 
Pour frederpe : une solution très simple :
 

Code :
  1. $selectmarque = $_POST["selectmarque"];
  2. // Je met toutes les valeurs sélectionnées entre ' '
  3. foreach( $selectmarque as $id => $value )
  4. {
  5.   $selectmarque[$id] = "'" . $value . "'";
  6. }
  7. // Je join le tout avec des virgules entre chaque élément du tableau
  8. echo "idmarque IN ( " . join( $selectmarque , " , " ) . " )";


 
Ca devrait aller mieux comme ça  :jap:


 
 
Vraiment merci pour cette solution !
 
Nettement plus simple que celle que j'avais envisagé et surtout qui marche :-)
 
Merci encore une fois !


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » [Résolu] Pb recherche multicritère sur une table Mysql
 

Annonces Google
Publicité