Recherche avec un ou plusieurs champs selectionné
Charleeeee
Messages postés
13
Statut
Membre
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à vous,
Je suis actuellement entrain de développer une application en PHP .
Et j'ai fais un fichier qui permet de rechercher avec 3 select différents, avec plusieurs résultats possible, il y a :
- 1) Si le champ 1 est selectionné alors requete pour affichage selon se qui est entré dans le select 1
- 2) Si le champ 2 est selectionné alors requete pour affichage selon se qui est entré dans le select 2
- 3) Si le champ 3 esr selectionné alors requete pour affichage selon se qui est entré dans le select 2
- 4) Si les champs 1 et 2 sont selectionné alors requete pour affichage selon se qui est entré dans le select 1 et select 2
- 5) Si les champs 2 et 3 sont selectionné alors requete pour affichage selon se qui est entré dans le select 2 et select 3
Mais je n'arrive pas à faire les points 4 et 5.
Pouvez vous m'aider ?
Merci par avance
Je suis actuellement entrain de développer une application en PHP .
Et j'ai fais un fichier qui permet de rechercher avec 3 select différents, avec plusieurs résultats possible, il y a :
- 1) Si le champ 1 est selectionné alors requete pour affichage selon se qui est entré dans le select 1
- 2) Si le champ 2 est selectionné alors requete pour affichage selon se qui est entré dans le select 2
- 3) Si le champ 3 esr selectionné alors requete pour affichage selon se qui est entré dans le select 2
- 4) Si les champs 1 et 2 sont selectionné alors requete pour affichage selon se qui est entré dans le select 1 et select 2
- 5) Si les champs 2 et 3 sont selectionné alors requete pour affichage selon se qui est entré dans le select 2 et select 3
Mais je n'arrive pas à faire les points 4 et 5.
Pouvez vous m'aider ?
Merci par avance
//1) ES CE QUE LE CHAMP MARQUE EST REMPLI == FONCTIONNE
if(!empty($marque)){
$query = $mysqli -> query("SELECT * FROM association_user_marque
INNER JOIN user
ON association_user_marque.id_user = user.id_user
INNER JOIN marque
ON association_user_marque.id_marque = marque.id_marque
WHERE association_user_marque.id_marque = '$marque'
");
$nb = $query -> num_rows;
if($nb > 0){
while($row = $query -> fetch_array()){
echo "<div class=\"col-md-4\">";
echo "<h3>".utf8_encode($row["prenom"])."</h3>";
echo "<p>".utf8_encode($row["nom_marque"])."</p>";
echo "<p>".utf8_encode($row["description"])."</p>";
echo "<p>".utf8_encode($row["id_region"])."</p>";
echo "<a href=\"fiche_representant.php?rps=".$row["id_user"]."\" title=\"En savoir plus\">En Savoir Plus</a>";
echo "</div>";
}
}else{
echo "<p>Il n'y a aucun résultat pour votre recherche</p>";
$query = $mysqli -> query("SELECT * FROM association_user_marque
INNER JOIN user
ON association_user_marque.id_user = user.id_user
INNER JOIN marque
ON association_user_marque.id_marque = marque.id_marque
");
while($row = $query -> fetch_array()){
echo "<div class=\"col-md-4\">";
echo "<h3>".utf8_encode($row["prenom"])."</h3>";
echo "<p>".utf8_encode($row["nom_marque"])."</p>";
echo "<p>".utf8_encode($row["description"])."</p>";
echo "<p>".utf8_encode($row["id_region"])."</p>";
echo "<a href=\"fiche_representant.php?rps=".$row["id_user"]."\" title=\"En savoir plus\">En Savoir Plus</a>";
echo "</div>";
}
}
//2) ES CE QUE LES CHAMPS 1 ET 2 SONT SELECTIONNÉ == NE FONCTIONNE PAS
}else if((isset($_POST["marque"]))&&(isset($_POST["region"]))){
$query = $mysqli -> query("SELECT * FROM association_user_marque
INNER JOIN user
ON association_user_marque.id_user = user.id_user
INNER JOIN marque
ON association_user_marque.id_marque = marque.id_marque
WHERE association_user_marque.id_marque = '$marque'
AND user.id_region = '$region'
");
$nb = $query -> num_rows;
if($nb > 0){
while($row = $query -> fetch_array()){
echo "<div class=\"col-md-4\">";
echo "<h3>".utf8_encode($row["prenom"])."</h3>";
echo "<p>".utf8_encode($row["nom_marque"])."</p>";
echo "<p>".utf8_encode($row["description"])."</p>";
echo "<p>".utf8_encode($row["id_region"])."</p>";
echo "<a href=\"fiche_representant.php?rps=".$row["id_user"]."\" title=\"En savoir plus\">En Savoir Plus</a>";
echo "</div>";
}
}
1 réponse
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, deux anomalies:
1) tu continues à utiliser les $_POST alors que, si je vois bien (tu ne montres qu'une partie de ton code), tu as des variables comme $marque et $region
2) la logique de ton programme semble être:si marque est sélectionné, je fais ceci sinon, si marque et région sont sélectionnés, je fais cela.
te rends-tu compte que "cela" ne sera jamais effectué?
as-tu une idée de comment corriger?-
Alors oui, j'ai les $_POST sur cette condition je vais changer pour remettre $marque et $region.
Et sinon nan justement je n'ai pas d'idée ..
Parce que moi j'aimerai dire : Si marque est selectionné, j'affiche, ou si marque et région sont selectionné alors j'affiche autre chose
Mais je dois pas avoir la bonne logique ..- ta logique c'est un peu comme ceci:
si il pleut, je reste à l'intérieur sinon, si il pleut et qu'on est dimanche, je vais me promener.
tu peux corriger simplement en faisant ainsi:si il pleut et qu'on est dimanche, je vais me promener. sinon, si il pleut, je reste à l'intérieur
donc, dans ton cas:si ES CE QUE LES CHAMPS 1 ET 2 SONT SELECTIONNÉ sinon ES CE QUE LE CHAMP MARQUE EST REMPLI
est-ce clair ainsi? - Alors maintenant il me selectionne bien les deux champs et il me retourne les bons résultats mais du coup maintenant quand je selectionne que le champ 1 il ne me retourne plus rien
//SI LES CHAMPS MARQUE ET REGION SONT POSTES : if((isset($marque))&&(isset($region))){ $query = $mysqli -> query("SELECT * FROM association_user_marque INNER JOIN user ON association_user_marque.id_user = user.id_user INNER JOIN marque ON association_user_marque.id_marque = marque.id_marque WHERE association_user_marque.id_marque = '$marque' AND user.id_region = '$region' "); $nb = $query -> num_rows; if($nb > 0){ while($row = $query -> fetch_array()){ echo "<div class=\"col-md-4\">"; echo "<p>Salut</p>"; echo "<h3>".utf8_encode($row["prenom"])."</h3>"; echo "<p>".utf8_encode($row["nom_marque"])."</p>"; echo "<p>".utf8_encode($row["description"])."</p>"; echo "<p>".utf8_encode($row["id_region"])."</p>"; echo "<a href=\"fiche_representant.php?rps=".$row["id_user"]."\" title=\"En savoir plus\">En Savoir Plus</a>"; echo "</div>"; } } }else if(isset($marque)){ $query = $mysqli -> query("SELECT * FROM association_user_marque INNER JOIN user ON association_user_marque.id_user = user.id_user INNER JOIN marque ON association_user_marque.id_marque = marque.id_marque WHERE association_user_marque.id_marque = '$marque' "); $nb = $query -> num_rows; if($nb > 0){ while($row = $query -> fetch_array()){ echo "<div class=\"col-md-4\">"; echo "<p>Salut marque</p>"; echo "<h3>".utf8_encode($row["prenom"])."</h3>"; echo "<p>".utf8_encode($row["nom_marque"])."</p>"; echo "<p>".utf8_encode($row["description"])."</p>"; echo "<p>".utf8_encode($row["id_region"])."</p>"; echo "<a href=\"fiche_representant.php?rps=".$row["id_user"]."\" title=\"En savoir plus\">En Savoir Plus</a>"; echo "</div>"; } } - ne devrais-tu pas utiliser !empty au lieu de isset? tu ne m'as pas montré tout ton code, je ne sais pas comment $marque et $region sont assignés.
je te suggère d'ajouter les messages quand la recherche ne retourne rien:echo "<p>Il n'y a aucun résultat pour votre recherche (marque, region)</p>";
ouecho "<p>Il n'y a aucun résultat pour votre recherche (marque)</p>";
comme cela tu sauras ce que fais ton code.
-