fonction rechercher

Ozil
Invité n'ayant pas de compte PHPfrance

20 oct. 2014, 15:58

bonjour j'aimerais faire une recherche par categorie mais le probleme est que si je choisis Arrivee tout comme Depart le meme resultat s'affiche alors que ce ne devrait pas etre le cas: voici mon code peut etre vous troverez le hic!!
en supposant qu'on s'est deja connecte ala base


<?php
$resultats="";
$nbreparametres=1; // nombre de parametres à renseigner pour la recherche
if(isset($_POST['query'])&& !empty($_POST['query'])){
$query= preg_replace("#[^a-zA-Z ?0-9]#i", "", $_POST['query']);
if($_POST['filtre']== "site entier"){
$nbreparametres=4;
$sql="(SELECT Id_Arrivee,Date_arrivee AS title FROM arrivee WHERE Date_arrivee LIKE ? OR objet LIKE ?)
UNION (SELECT Id_depart,date_correspondance AS title FROM depart WHERE date_correspondance LIKE ? OR destinataire LIKE ?)";
} else if($_POST['filtre']=="blog"){
$sql="SELECT Id_Arrivee,Date_arrivee AS title FROM arrivee WHERE Date_arrivee LIKE ? OR objet LIKE ?";
} else if($_POST['filtre']=="page"){
$sql= "SELECT Id_depart,date_correspondance AS title FROM depart WHERE date_correspondance LIKE ? OR destinataire LIKE ?";

}
require_once('Connections/connexion.php');
$req=$db->prepare($sql);
if($nbreparametres=2){
$req->execute(array('%'.$query.'%', '%'.$query.'%'));
} else{
$req->execute(array('%'.$query.'%', '%'.$query.'%', '%'.$query.'%', '%'.$query.'%'));
}

$count=$req->rowCount();
if($count >= 1){
echo " $count résultat(s) trouvé(s) pour <strong>$query</strong><hr/>";
while($data = $req->fetch(PDO::FETCH_OBJ)){
echo '#'.$data->Id_depart.'-Titre: '.$data->title.'<br/>';
}
}else {
echo " 0 résultat trouvé pour <strong>$query</strong><hr/>";
}
}
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<label for="query">Entrer votre recherche</label>
<input type="search" name="query" maxlength="80" size="80" id="query"/></br>
Rechercher au niveau de :
<select name="filtre">
<option value="Arrivee">Arrivee</option>
<option value="Depart">Depart</option>
</select></br>
<input type="submit" value="Rechercher">
</form>

<?php
if (isset($_POST['query'])){
require_once('Connections/connexion.php');
extract($_POST);
$req = "select * FROM arrivee where categorie like '%$Rechercher%'" ;
$execute = mysql_query($req) or die (mysql_error()) ;
echo"<table border=0 >
<tr>
<td>Id_Arrivee</td>
<td>Date_arrivee</td>
<td>num_correspondance</td>
<td>expediteur</td>
<td> objet </td>
<td>categorie</td>
<td>num_reponse</td>
<td>designation</td>
<td>observation</td>
<td>genre</td>
<td>id_dossier</td>
<td>id_destinataire</td>
<td>id_fournisseur</td>
</tr>";
while($ligne=mysql_fetch_array($execute)){
echo"<tr>
<td>".$ligne['Id_Arrivee']."</td>
<td>".$ligne['Date_arrivee']."</td>
<td>".$ligne['num_correspondance']."</td>
<td>".$ligne['expediteur']."</td>
<td>".$ligne['objet']."</td>
<td>".$ligne['categorie']."</td>
<td>".$ligne['num_reponse']."</td>
<td>".$ligne['designation']."</td>
<td>".$ligne['observation']."</td>
<td>".$ligne['genre']."</td>
<td>".$ligne['id_dossier']."</td>
<td>".$ligne['id_destinataire']."</td>
<td>".$ligne['id_fournisseur']."</td>
</tr>";
}
echo"</table>";
}
?>

ynx
Mammouth du PHP | 586 Messages

20 oct. 2014, 16:45

Salut,
if($nbreparametres=2) {
Cette condition n'est pas correcte, il s'agit ici d'une affectation (un seul =). Pour effectuer une comparaison il faut utiliser ==. A corriger comme ceci :
if($nbreparametres == 2) {
Néanmoins il me semble qu'il y ai un problème de logique car la variable $nbreparametres ne vaudra jamais la valeur 2 :
- $nbreparametres est initialisé à 1
- si $_POST['filtre'] vaut "site entier", alors $nbreparametres vaut 4

Bonne journée