Recherche avec un ou plusieurs champs selectionné

Charleeeee Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 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
//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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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   Statut Membre Dernière intervention  
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Charleeeee Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Ah oui d'accord je travaille à l'envers enfaite :) !
Merci
0
Charleeeee Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Charleeeee Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
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