Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1460 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  recherche via un select

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

recherche via un select

n°1556333
francescu
youpee !!
Posté le 07-05-2007 à 09:57:33  profilanswer
 

bonjour a tous,
j ai dans une base un champs "surface" int  (en metres carrés),
j essaie de faire un formulaire de recherche qui comprend 5 tranches du genre de 0a20  de 21a40 de 41a60   etc
et je galere pour mon faire mon select   :pt1cable:  
 
si vous avez deux secondes a m'accorder, merci d avance  ;)  

mood
Publicité
Posté le 07-05-2007 à 09:57:33  profilanswer
 

n°1556349
art_dupond
je suis neuneu... oui oui !!
Posté le 07-05-2007 à 10:13:00  profilanswer
 

tu peux faire ça avec BETWEEN je crois

 

ou "brol >0 AND  brol <20"

 



Message édité par art_dupond le 07-05-2007 à 10:21:15

---------------
oui oui
n°1556363
art_dupond
je suis neuneu... oui oui !!
Posté le 07-05-2007 à 10:21:17  profilanswer
 

euh oups, c'est le select du formulaire que tu veux faire ?
 
<select id="surface">
  <option value="1">0-20</option>
  <option value="2">21-40</option>
</select>
 
:??:


---------------
oui oui
n°1556372
francescu
youpee !!
Posté le 07-05-2007 à 10:37:48  profilanswer
 

oui je sais faire un select  :p
 
j essaie d etoffer un peu plus : j ai un formaulaire de recherche multi criteres. POur la surface je me suis trompé en mettant un enum dans la partie saisie, j ai donc remplacer par un int. Le select ne se fait que dans la partie "internaute" du coup. mais la je ne sais pas rechercher dans la table avec un systeme de tranche.
J avais ca avant :
 
 

Code :
  1. <select name="rechercher[]">
  2.                     <option value="0" <? if($rechercher[3]=="0" ) echo " selected"; ?>>S&eacute;lection ...</option>
  3.                     <option value="20" <? if($rechercher[3]=="20" ) echo " selected"; ?>> 0-20 </option>
  4.                     <option value="50"<? if($rechercher[3]=="50" ) echo " selected"; ?>> 21-50</option>
  5.                     <option value="75"<? if($rechercher[3]=="75" ) echo " selected"; ?>> 51-75</option>
  6.                     <option value="100"<? if($rechercher[3]=="100" ) echo " selected"; ?>> 76-100</option>
  7.                     <option value="150"<? if($rechercher[3]=="150" ) echo " selected"; ?>> 101-150</option>
  8.                     <option value="200"<? if($rechercher[3]=="200" ) echo " selected"; ?>> 151-200</option>
  9.                     <option value="250"<? if($rechercher[3]=="250" ) echo " selected"; ?>> 201-250</option>
  10.                     <option value="300"<? if($rechercher[3]=="300" ) echo " selected"; ?>> 251-300</option>
  11.                     <option value="+300"<? if($rechercher[3]=="+300" ) echo " selected"; ?>> +300</option>
  12.                   </select>


 
 je me fait mal comprendre peut etre ?
merci :)

n°1556397
art_dupond
je suis neuneu... oui oui !!
Posté le 07-05-2007 à 10:55:01  profilanswer
 

aïe j'ai du mal à comprendre :p

 

il est à quel niveau le problème ? html, php, sql ?

 

si c'est sql, ma première réponse ne t'inspire pas ?


Message édité par art_dupond le 07-05-2007 à 10:56:01

---------------
oui oui
n°1556415
francescu
youpee !!
Posté le 07-05-2007 à 11:13:04  profilanswer
 

a priori ca doit etre avec BETWEEN... je fouille de ce coté la  merci :p

n°1556443
francescu
youpee !!
Posté le 07-05-2007 à 12:08:25  profilanswer
 

j ai vraiment du mal  :/
d apres ce que j ai trouvé il faut que je fasse une requete par tranche voulue, mais je sais pas organiser les boucles etc...  
need help please :p

n°1556454
art_dupond
je suis neuneu... oui oui !!
Posté le 07-05-2007 à 12:59:13  profilanswer
 

des boucles :??:
 
 
en fait, je crois que je n'ai rien compris à ton problème :sweat:  
 
explique clairement ce que tu veux faire, où ça coince et à quel niveau ça coince (php, sql, ...)
 
 
 
ce que j'ai compris :  
 
tu as un formulaire et quand on choisis une certaine surface, tu récupères les enregistrements correspondants.
Si c'est ça, tu fais juste une requête avec un between (je crois) non ?
 


---------------
oui oui
n°1556458
francescu
youpee !!
Posté le 07-05-2007 à 13:04:14  profilanswer
 

ca coince un peu partout... je ne sais pas faire la requete (les requetes?), et ni les conditions  :/
 
ex : l internaute choisi la surface 20-51 dans la liste de choix. comment faire pour renvoyé les enregistrements correspondants. Dans ma table il n y a que des entiers desormais.
il me faut une condition et une requete par tranche peut etre...  
 


Message édité par francescu le 07-05-2007 à 13:11:15
n°1556494
art_dupond
je suis neuneu... oui oui !!
Posté le 07-05-2007 à 14:56:05  profilanswer
 

dans ton php, tu peux par exemple faire un switch sur ton select
 

Code :
  1. $condition = ''; // c'est dans condition que tu vas dire de où à où sélectionner
  2. switch ($_POST['rechercher']) // pour différentes valeurs du select on va regarder ce qu'il faut faire
  3. {
  4.    case 20: // ici, il faut prendre surface entre 0 et 20
  5.         $condition = 'surface >= 0 AND surface <= 20';  // je connais pas la syntaxe avec BETWEEN, je te mets une condition "normale"
  6.         break;
  7.    case 50: // ici, on prend surface entre 21 et 50
  8.         $condition = 'surface > 20 AND surface <= 50';
  9.         break;
  10.    deflault: // si ce n'est pas un des cas prévus
  11.        // tu peux dire d'afficher un message d'erreur par exemple
  12.        // ou tout afficher par défaut
  13.      
  14. }
  15. $requete = 'SELECT * FROM ta_table WHERE '.$condition;
  16. msyql_query($requete) or die('oups ça merdouille');


 
 
 
note: remplacer * par le nom des champs


Message édité par art_dupond le 07-05-2007 à 14:57:05

---------------
oui oui
mood
Publicité
Posté le 07-05-2007 à 14:56:05  profilanswer
 

n°1556541
Shinuza
This is unexecpected
Posté le 07-05-2007 à 15:42:56  profilanswer
 

Note : Remplacer deflault: par default:


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1556544
art_dupond
je suis neuneu... oui oui !!
Posté le 07-05-2007 à 15:45:01  profilanswer
 

note : par défaut remplacer deflault: par default:


---------------
oui oui
n°1556645
francescu
youpee !!
Posté le 07-05-2007 à 18:04:57  profilanswer
 

je te remercie bcp :))
ca me semble pas mal du tout... meme si je ne sais pas encore inserer un switch dans un select.
Je vais continuer de chercher en tout cas,
merci encore :p

n°1556700
art_dupond
je suis neuneu... oui oui !!
Posté le 07-05-2007 à 20:24:01  profilanswer
 

francescu a écrit :

je te remercie bcp :))
ca me semble pas mal du tout... meme si je ne sais pas encore inserer un switch dans un select.
Je vais continuer de chercher en tout cas,
merci encore :p


:??:
 
J'ai un pitit doute,
 
tu peux poster le action de ton formulaire et comment tu traites ton formulaire ?


---------------
oui oui
n°1556817
francescu
youpee !!
Posté le 08-05-2007 à 12:20:08  profilanswer
 

 
oui voila :
 

Code :
  1. <form action="recherche.php5" name="form" method="post">
  2.  <br>
  3.  <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">
  4.    <tr>
  5.      <td width="100%" height="32" align="center">
  6.   <table width="612" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#990000">
  7.               <tr>
  8.                 <td width="127" class="style2"  >
  9.                   <div align="right">Type de transaction&nbsp; </div></td>
  10.                 <td width="185" height="32" class="style2"  >
  11.                   <div align="left">
  12.                     <select name="rechercher[]">
  13.                       <option value="0"<? if($rechercher[0]=="0" ) echo " selected"; ?>>S&eacute;lection ...</option>
  14.                       <option value="location" <? if($rechercher[0]=="location" ) echo " selected"; ?>>location</option>
  15.                       <option value="location_saisonniere"<? if($rechercher[0]=="location_saisonniere" ) echo " selected"; ?>>location saisonniere</option>
  16.                       <option value="vente"<? if($rechercher[0]=="vente" ) echo " selected"; ?>> vente</option>
  17.                     </select>                       
  18.                     <br>   
  19.                   </div></td>
  20.     
  21.                 <td width="150" class="style2" >
  22.                   <div align="right">Type de bien immobilier&nbsp; </div></td>
  23.                 <td width="150" class="style2" ><div align="left" >
  24.                   <select name="rechercher[]">
  25.                           <option value="0" <? if($rechercher[1]=="0" ) echo " selected"; ?>>S&eacute;lection ...</option>
  26.                           <option value="villa" <? if($rechercher[1]=="villa" ) echo " selected"; ?>>Villa</option>
  27.                           <option value="appartement" <? if($rechercher[1]=="appartement" ) echo " selected"; ?>>appartement</option>
  28.                           <option value="maison_village"  <? if($rechercher[1]=="maison_village" ) echo " selected"; ?>>maison de village</option>
  29.                           <option value="terrain" <? if($rechercher[1]=="terrain" ) echo " selected"; ?>>terrain</option>
  30.                           <option value="commerce" <? if($rechercher[1]=="commerce" ) echo " selected"; ?>>commerce</option>
  31.                           <option value="propriete" <? if($rechercher[1]=="propriete" ) echo " selected"; ?>>propriete</option>
  32.                         </select>
  33.                 </div></td>
  34.               </tr>
  35.               <tr>
  36.                 <td class="style2">
  37.                   <div align="right">Nombre de pieces&nbsp;</div></td>
  38.                 <td height="24" class="style2">
  39.                   <div align="left">
  40.                     <select name="rechercher[]" size="1">
  41.                       <option value="0"  <? if($rechercher[2]=="location" ) echo " selected"; ?>>S&eacute;lection ...</option>
  42.                       <option value="1" <? if($rechercher[2]=="1" ) echo " selected"; ?>>1</option>
  43.                       <option value="2"<? if($rechercher[2]=="2" ) echo " selected"; ?>>2</option>
  44.        <option value="3"<? if($rechercher[2]=="3" ) echo " selected"; ?>>3</option>
  45.      <option value="4"<? if($rechercher[2]=="4" ) echo " selected"; ?>>4</option>
  46.         <option value="5"<? if($rechercher[2]=="5" ) echo " selected"; ?>>5</option>
  47.        <option value="6"<? if($rechercher[2]=="6" ) echo " selected"; ?>>6</option>
  48.         <option value="6+"<? if($rechercher[2]=="6+" ) echo " selected"; ?>>6+</option>
  49.                     </select>
  50.                   </div></td>
  51.                 <td class="style2">
  52.                   <div align="right">Surface&nbsp; </div></td>
  53.                 <td height="24" class="style2"><div align="left">
  54.                   <select name="rechercher[]">
  55.                     <option value="0" <? if($rechercher[3]=="0" ) echo " selected"; ?>>S&eacute;lection ...</option>
  56.                     <option value="20" <? if($rechercher[3]=="20" ) echo " selected"; ?>> 0-20 </option>
  57.                     <option value="50"<? if($rechercher[3]=="50" ) echo " selected"; ?>> 21-50</option>
  58.                     <option value="75"<? if($rechercher[3]=="75" ) echo " selected"; ?>> 51-75</option>
  59.                     <option value="100"<? if($rechercher[3]=="100" ) echo " selected"; ?>> 76-100</option>
  60.                     <option value="150"<? if($rechercher[3]=="150" ) echo " selected"; ?>> 101-150</option>
  61.                     <option value="200"<? if($rechercher[3]=="200" ) echo " selected"; ?>> 151-200</option>
  62.                     <option value="250"<? if($rechercher[3]=="250" ) echo " selected"; ?>> 201-250</option>
  63.                     <option value="300"<? if($rechercher[3]=="300" ) echo " selected"; ?>> 251-300</option>
  64.                     <option value="301"<? if($rechercher[3]=="301" ) echo " selected"; ?>> +300</option>
  65.                   </select>
  66.                 </div></td>
  67.               </tr>
  68.               <tr>
  69.                 <td height="39" colspan="4" class="style42" ><div align="left" class="style43">
  70.                   <div align="center">
  71.                     <input type="submit" name="envoyer" value="Rechercher"> </div> </div> </td> </tr>
  72.             </table><div align="center">
  73. input type="hidden" name="action" value="rechercher">
  74.           </th>  </div> </tr>
  75.  <tr >
  76.              <td height="276" valign="top" align="left" b > <br>
  77.  <table width="100%" border="0" cellspacing="0" cellpadding="0" >
  78.              <tr><td valign="top" width="100%" height="120" bgcolor="#E3E3E1" >
  79.    <table width="100%" height="90%" >
  80. <?
  81.   if(isset($action)) {
  82.      if($nb_bien >0) {
  83.      while ($object_bien = mysql_fetch_object($result)) {
  84.      echo"
  85.  <tr bgcolor=\"#cccccc\">
  86.  <td  valign=\"middle\" colspan=\"3\"> <div align=left><font size=\"1\" face=\"Verdana\" > 
  87.  <a href=javascript:onClick=popup_Window('./detail.php5?id=" .  $object_bien->num_bien . "',995,925) >
  88.  <img src=\"./images/img_admin/".$object_bien->num_bien."_a.jpg\" height=\"102\" border='0' align='left'> </a></font></div>
  89.  <div align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#333333\">
  90.  <br><br>&nbsp; &nbsp; &nbsp; -Reference :<strong> $object_bien->reference </strong>-  &nbsp; $object_bien->nb_piece pi&egrave;ces &nbsp;  surface : $object_bien->surface m&sup2; &nbsp; ";
  91. if ($object_bien->type_bien  == "maison_village" ){
  92.  echo"<strong> maison de village </strong>   &nbsp;  <br>$object_bien->commentaire_1 <br> $object_bien->type    &nbsp;  <strong>$object_bien->prix &euro; </strong></div>"; }
  93. else
  94.  { echo "<strong> $object_bien->type_bien </strong> &nbsp;  <br>$object_bien->commentaire_1 <br> $object_bien->type  &nbsp;  <strong> $object_bien->prix &euro; </strong></div>"; }
  95.    if ($object_bien->coeur == "oui" ) {
  96.  print "<div align=\"right\">  <img src='images/coeur.jpg' alt=\"coup de coeur\"></div></td></tr> ";
  97.  }
  98.  else { echo" &nbsp </td></tr> ";
  99.  }   }
  100.      } else {
  101.       echo "<tr>
  102.     <td>Pas de résultats pour votre recherche.</td>
  103.      </tr> ";
  104.      }
  105.     }
  106.      ?>
  107.   </table> </td> </tr> </table> </td>   </tr>
  108. <tr>  <td ></td>
  109.             </tr></table></form>


 
 
euh la mise en page a changé et c est un peu bordelique du coup :/
mais a priori tout fonctionne mnt avec :

Code :
  1. if(isset($action)) {
  2. //--------------------- recuperation des enregistrements ---------
  3. $tab_champs = array("type","type_bien","nb_piece", "surface" );
  4. $query = "select * from bien where";
  5. $i=0;
  6. $ajouter_and = false;
  7. foreach($rechercher as $champs) {
  8.   if($champs!="0" ) {
  9.   if($ajouter_and) {
  10.    $query .= " and ";
  11.   } else {
  12.    $query .= " ";
  13.   }
  14.   $ajouter_and = true;
  15.  if($i==3){
  16.   if($champs!="0" ) {
  17.   $condition = '';
  18.   switch ($champs)
  19.   {
  20.      case 20:
  21.     $condition = "surface >= '0' AND surface <= '20'";
  22.     break;
  23.      case 50:
  24.     $condition = "surface > '21' AND surface <= '50'";
  25.     break;
  26.      case 75:
  27.     $condition = "surface > '51' AND surface <= '75'";
  28.     break;
  29.      case 100:
  30.     $condition = "surface > '76' AND surface <= '100'";
  31.     break;
  32.    case 150:
  33.     $condition = "surface > '101' AND surface <= '150'";
  34.     break;
  35.      case 200:
  36.     $condition = "surface > '151' AND surface <= '200'";
  37.     break;
  38.      case 250:
  39.     $condition = "surface > '201' AND surface <= '250'";
  40.     break;
  41.      case 300:
  42.     $condition = "surface > '251' AND surface <= '300'";
  43.     break;
  44.     case 301:
  45.     $condition = "surface > '300'";
  46.     break;  
  47.    }
  48.   }
  49.   $query .= $condition;
  50.  } else {
  51.   $query .= $tab_champs[$i]."='".$champs."'";
  52.  }
  53.  }
  54.  $i++;
  55. }
  56. if($ajouter_and==false)  $query .= " 1";
  57. $result = mysql_query($query);
  58. $nb_bien = mysql_num_rows($result);
  59. }
  60. ?>


 
c etait chaud pour mon ptit cerveau :p
merci encore !  :)

n°1556828
art_dupond
je suis neuneu... oui oui !!
Posté le 08-05-2007 à 12:56:46  profilanswer
 

ah ouais, je comprenais pas le pourquoi du "switch dans le select"
 
mais si ça marche, fallait pas tout poster :p
 
 
Sinon j'aurais séparé le traitement de chaque <select> au lieu de tout mettre dans un grand tableau. Mais c'est juste mon avis à deux balles ;)


---------------
oui oui

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  recherche via un select

 

Sujets relatifs
Recherche codeur c++ -> server Rose OnlineRecherche multiple avec strpos
Recherche alphabétique (petit problème avec les chiffres)Moteur de recherche avec synonymes
recherche d une valeur et copie sous excelproblème: Pagination moteur de recherche
recherche fonction HTML TO XMLEffectuer une recherche avec des SELECT Option à plusieurs niveaux
MYSQL - Recherche d'un "SELECT" hasardeux non "équiprobable" !Recherche automatique dans Select
Plus de sujets relatifs à : recherche via un select


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR