Recherche avec un ou plusieurs champs selectionné

Fermé
Charleeeee Messages postés 13 Date d'inscription jeudi 1 juin 2017 Statut Membre Dernière intervention 3 juin 2017 - Modifié le 3 juin 2017 à 16:31
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 3 juin 2017 à 18:40
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
//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 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
3 juin 2017 à 16:26
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?
0
Charleeeee Messages postés 13 Date d'inscription jeudi 1 juin 2017 Statut Membre Dernière intervention 3 juin 2017
3 juin 2017 à 16:43
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 ..
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > Charleeeee Messages postés 13 Date d'inscription jeudi 1 juin 2017 Statut Membre Dernière intervention 3 juin 2017
Modifié le 3 juin 2017 à 16:53
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?
0
Charleeeee Messages postés 13 Date d'inscription jeudi 1 juin 2017 Statut Membre Dernière intervention 3 juin 2017 > yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
3 juin 2017 à 16:54
Ah oui d'accord je travaille à l'envers enfaite :) !
Merci
0
Charleeeee Messages postés 13 Date d'inscription jeudi 1 juin 2017 Statut Membre Dernière intervention 3 juin 2017 > yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
Modifié le 3 juin 2017 à 17:21
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>";
        }       

    }
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > Charleeeee Messages postés 13 Date d'inscription jeudi 1 juin 2017 Statut Membre Dernière intervention 3 juin 2017
3 juin 2017 à 18:40
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>";

ou
echo "<p>Il n'y a aucun résultat pour votre recherche (marque)</p>";

comme cela tu sauras ce que fais ton code.
0