Une recherche multicritère qui marche pas...

ludolimc

Nouveau membre
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:

[cpp]<?php
include("haut_recherche.php");

?><br/><br/>
<form method="post"/>


<?php
include("date_recherche.php");
include ("immat_recherche.php");
include("marque_recherche.php");
include("genre_recherche.php");?>

<p><input type="submit" value="Rechercher" tabindex="90"/></p><br/><br/>




<?php



include("bas.php"); ?>
<table>
<tr>
<th>Date de remise</th>
<th>Nom</th>
<th>Adresse</th>
<th>Ville</th>
</tr>
<?php
if(isset ($_POST['chiffre']) OR isset($_POST['lettre']) OR isset($_POST['marque']) OR isset($_POST['genre']))
{
if ($_POST['chiffre'] != NULL OR $_POST['lettre'] != NULL OR $_POST['marque'] != NULL OR $_POST['genre'] != NULL)
{



//ouverture de la base forbachww pour chercher les données
@mysql_connect("localhost", "root", "") or die ("Impossible de se connecter");
mysql_select_db("forbachww");



$sqlWHERE='';

if (!empty($jour) AND !empty($mois) AND !empty($annee))
{
$sqlWHERE.= "AND debut<='".$_POST['annee'].'-'.$_POST['mois'].'-'.$_POST['jour']."'";
$date=$annee.'-'.$mois.'-'.$jour;
$jour=$_POST['jour'];
$mois=$_POST['mois'];
$annee=$_POST['annee'];
}
//if (!empty($chiffre)AND !empty($lettre))
//{
//$sqlWHERE.=" AND immatriculation='".$_POST['chiffre'].$_POST['lettre']."'";
if(!empty($chiffre) AND !empty($lettre))
{
$imww=$chiffre.$lettre;
$chiffre=$_POST['chiffre'];
$lettre=$_POST['lettre'];
$sqlWHERE.="AND immatriculation='".$_POST['chiffre'].$_POST['lettre']."'";

}
if (!empty($_POST['marque']))
{
$sqlWHERE.= " AND marque='".$_POST['marque']."'";
$marque=$_POST['marque'];
}
if (!empty($_POST['genre']))
{
$sqlWHERE.= " AND genre='".$_POST['genre']."'";
$genre=$_POST['genre'];
}


$sqlWHERE=substr($sqlWHERE,4);






$reponse=mysql_query("SELECT * FROM ww_db WHERE $sqlWHERE");


while($donnees = mysql_fetch_array($reponse) )
{
echo $sqlWHERE;
echo $chiffre;
echo $lettre;
echo $imww;
?>



<tr>
<td><?php echo $donnees['debut'];?></td>
<td><?php echo $donnees['nom'];?></td>
<td><?php echo $donnees['adresse'];?></td>
<td><?php echo $donnees['ville'];?></td>
</tr>

<?php

}

}
}
@mysql_close() or die (mysql_error());?>
</table>





[/cpp]

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 :

[cpp]if(!empty($chiffre) AND !empty($lettre))
{
$imww=$chiffre.$lettre;
$chiffre=$_POST['chiffre'];
$lettre=$_POST['lettre'];
$sqlWHERE.="AND immatriculation='".$_POST['chiffre'].$_POST['lettre']."'";[/cpp]

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

[cpp]<p class="requete"><label>Immatriculation : <input type="int" name="chiffre"tabindex="20" size=4 onKeyup="autotab(this, document.formulaire.second)" maxlength=4></label>
<select name="lettre" tabindex="20">
<option value=""></option>
<option value="WWE">WWE</option>
<option value="WWF">WWF</option>
<option value="WWG">WWG</option>
</select></p>[/cpp]

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

boub popsyteam

Grand Maître
Code:
   ...
 $imww=$chiffre.$lettre;
    $chiffre=$_POST['chiffre'];
    $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 ... :??:
 

ludolimc

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

ludolimc

Nouveau membre
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:

[cpp]<tr>
<td><?php echo $donnees['debut'];?></td>
<td><?php echo $donnees['nom'];?></td>
<td><?php echo $donnees['adresse'];?></td>
<td><?php echo $donnees['ville'];?></td>
</tr>[/cpp]

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

boub popsyteam

Grand Maître
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:
<?php 
/* 
* Pierre-Yves LEGENDRE - 09/01/2003 20h44
* Convertisseur date US>FR 
*/ 

function datefr($date) { 
$split = split("-",$date); 
$annee = $split[0]; 
$mois = $split[1]; 
$jour = $split[2]; 
return "$jour"."-"."$mois"."-"."$annee"; 
} 

$date='2004-01-09'; // Date format américain
// $date=date("Y-m-d"); // Ou date du jour
echo datefr($date); 
?>

cf:
 

marsien

Grand Maître
Ou avec une date au format timestamp, c'est encore plus simple :

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

:merci:
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 125
Messages
6 717 799
Membres
1 586 365
Dernier membre
matiOs1
Partager cette page
Haut