FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » Une recherche multicritère qui marche pas...
 

Une recherche multicritère qui marche pas...

Il y a 270 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 : Une recherche multicritère qui marche pas...
 
Plus d'informations

Bonjour,
 
Voilà maintenant près de 3 jours que je ne trouve pas la solution à mon problème aussi je me permet de me tourner vers vous...
 
J'ai mis en place un formulaire de saisie pour enregistrer des véhicules avec diverses données...Afin de rechercher un véhicule en particulier j'essaie de mettre en place un formulaire de recherche avec 4 critères : je souhaite que les recherches soient possibles avec 1 critère saisie comme avec les 4...
 
Voici mon code:
 

Code :
  1. <?php
  2. include("haut_recherche.php" );
  3. ?><br/><br/>
  4. <form method="post"/>
  5. <?php
  6. include("date_recherche.php" );
  7. include ("immat_recherche.php" );
  8. include("marque_recherche.php" );
  9. include("genre_recherche.php" );?>
  10. <p><input type="submit" value="Rechercher" tabindex="90"/></p><br/><br/>
  11. <?php
  12. include("bas.php" ); ?>
  13. <table>
  14. <tr>
  15. <th>Date de remise</th>
  16. <th>Nom</th>
  17. <th>Adresse</th>
  18. <th>Ville</th>
  19. </tr>
  20. <?php
  21. if(isset ($_POST['chiffre']) OR isset($_POST['lettre']) OR isset($_POST['marque']) OR isset($_POST['genre']))
  22. {
  23. if ($_POST['chiffre'] != NULL  OR $_POST['lettre'] != NULL OR $_POST['marque'] != NULL OR $_POST['genre'] != NULL)
  24. {
  25. //ouverture de la base forbachww pour chercher les données    
  26. @mysql_connect("localhost", "root", "" ) or die ("Impossible de se connecter" );
  27. mysql_select_db("forbachww" );
  28. $sqlWHERE='';
  29. if (!empty($jour) AND !empty($mois) AND !empty($annee))
  30. {
  31.     $sqlWHERE.= "AND debut<='".$_POST['annee'].'-'.$_POST['mois'].'-'.$_POST['jour']."'";
  32.     $date=$annee.'-'.$mois.'-'.$jour;
  33.     $jour=$_POST['jour'];
  34.     $mois=$_POST['mois'];
  35.     $annee=$_POST['annee'];
  36. }
  37. //if (!empty($chiffre)AND !empty($lettre))
  38. //{    
  39.     //$sqlWHERE.=" AND immatriculation='".$_POST['chiffre'].$_POST['lettre']."'";
  40.     if(!empty($chiffre) AND !empty($lettre))
  41.     {
  42.     $imww=$chiffre.$lettre;
  43.     $chiffre=$_POST['chiffre'];
  44.     $lettre=$_POST['lettre'];
  45.     $sqlWHERE.="AND immatriculation='".$_POST['chiffre'].$_POST['lettre']."'";
  46. }
  47. if (!empty($_POST['marque']))
  48. {
  49.     $sqlWHERE.= " AND marque='".$_POST['marque']."'";
  50.     $marque=$_POST['marque'];
  51. }
  52. if (!empty($_POST['genre']))
  53. {
  54.     $sqlWHERE.= " AND genre='".$_POST['genre']."'";
  55.     $genre=$_POST['genre'];
  56. }
  57. $sqlWHERE=substr($sqlWHERE,4);
  58. $reponse=mysql_query("SELECT * FROM ww_db WHERE $sqlWHERE" );
  59. while($donnees = mysql_fetch_array($reponse) )
  60. {
  61. echo $sqlWHERE;
  62. echo $chiffre;
  63. echo $lettre;
  64. echo $imww;
  65. ?>
  66. <tr>
  67. <td><?php echo $donnees['debut'];?></td>
  68. <td><?php echo $donnees['nom'];?></td>
  69. <td><?php echo $donnees['adresse'];?></td>
  70. <td><?php echo $donnees['ville'];?></td>
  71. </tr>
  72. <?php
  73. }
  74. }
  75. }
  76. @mysql_close() or die (mysql_error());?>
  77. </table>


 
Le souci c'est que tous les critères fonctionnent sauf celui de l'immatriculation...MySQL me donne un message d'erreur comme si ces variables n'étaient pas définis or elles le sont bien :
 

Code :
  1. if(!empty($chiffre) AND !empty($lettre))
  2.     {
  3.     $imww=$chiffre.$lettre;
  4.     $chiffre=$_POST['chiffre'];
  5.     $lettre=$_POST['lettre'];
  6.     $sqlWHERE.="AND immatriculation='".$_POST['chiffre'].$_POST['lettre']."'";


 
et dans le module concerné (immat_recherche.php) on trouve ceci:
 

Code :
  1. <p class="requete"><label>Immatriculation : <input type="int" name="chiffre"tabindex="20" size=4 onKeyup="autotab(this, document.formulaire.second)" maxlength=4></label>
  2. <select name="lettre" tabindex="20">
  3. <option value=""></option>
  4. <option value="WWE">WWE</option>
  5. <option value="WWF">WWF</option>
  6. <option value="WWG">WWG</option>
  7. </select></p>


 
J'avoue être vraiment perdu d'autant que j'ai débuté le php en décembre alors  :(  
 
Si quelqu'un peut m'aider...ça m'aiderait vraiment beaucoup...

G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

Code :
  1. ...
  2. $imww=$chiffre.$lettre;
  3.     $chiffre=$_POST['chiffre'];
  4.     $lettre=$_POST['lettre'];


Ca te choque pas de définir des variables APRES que tu les ai testées et que tu t'en sois servies ... :??:


---------------
SPAM & WAREZ = Ban!
Ultimate Boot CD | Memtest+
Mon bar préféré à Lyon ! | Bijoux Fantaisie de Créateur !
Plus d'informations

Je dois avouer que ça ne me génait pas vraiment car ça fonctionnait pour tous les critères sauf l'mmatriculation...merci beaucoup :)
 
Encore une petite question:
 
la date est au format: aaaa-mm-jj
 
comme vous pouvez le remarquez dans mon script, j'affiche la date enregistrée sur ma table ainsi que le nom et l'adresse...cette date apparrait donc dans la forme américaine...est-il possible qu'elle s'affiche dans le bon ordre ???


Message édité par ludolimc le 09-01-2007 à 21:22:03
G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

Bin avec date() tu peux spécifier ton format ...


---------------
SPAM & WAREZ = Ban!
Ultimate Boot CD | Memtest+
Mon bar préféré à Lyon ! | Bijoux Fantaisie de Créateur !
Plus d'informations

En fait ce que je souhaite faire c'est une convertion entre la date qui se trouve dans ma table SQL et ce qui va s'afficher à l'écran dans mon tableau:
 

Code :
  1. <tr>
  2. <td><?php echo $donnees['debut'];?></td>
  3. <td><?php echo $donnees['nom'];?></td>
  4. <td><?php echo $donnees['adresse'];?></td>
  5. <td><?php echo $donnees['ville'];?></td>
  6. </tr>


 
pour que $donnees['debut'] qui correspond à la date d'attribution passe au format jj/mm/aaaa

G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

Bah si tu la recupere au format constant "YYYY-mm-jj" tu peux faire avec des substr et reconstruire la chaine ...
 
 
edit: j'ai trouvé plus sympas AMHA:
 

Code :
  1. <?php
  2. /*  
  3. * Pierre-Yves LEGENDRE - 09/01/2003 20h44
  4. * Convertisseur date US>FR  
  5. */
  6. function datefr($date) {
  7. $split = split("-",$date);
  8. $annee = $split[0];
  9. $mois = $split[1];
  10. $jour = $split[2];
  11. return "$jour"."-"."$mois"."-"."$annee";
  12. }
  13. $date='2004-01-09'; // Date format américain
  14. // $date=date("Y-m-d" ); // Ou date du jour
  15. echo datefr($date);
  16. ?>


 
cf: http://www.comscripts.com/sources/ [...] r.140.html


Message édité par boub popsy team le 10-01-2007 à 01:13:38

---------------
SPAM & WAREZ = Ban!
Ultimate Boot CD | Memtest+
Mon bar préféré à Lyon ! | Bijoux Fantaisie de Créateur !
Je me la pête
Profil : /!\ Docteur - PDG
Plus d'informations

Ou avec une date au format timestamp, c'est encore plus simple :
 

Code :
  1. $datefr = date('d-m-Y', $donnees['debut']);


 
:jap:


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » Une recherche multicritère qui marche pas...
 

Annonces Google
Publicité
Les ressources relatives