Se connecter avec
S'enregistrer | Connectez-vous

Une recherche multicritère qui marche pas...

Dernière réponse : dans Programmation

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:

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

  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:

  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...

Autres pages sur : recherche multicritere marche

Lassé par la pub ? Créez un compte

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 ???

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:

  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

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:

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


cf: http://www.comscripts.com/sources/php.convertir-une-dat...
Lassé par la pub ? Créez un compte