IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

faire un filtre multicriteres


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Par défaut faire un filtre multicriteres
    bonjour,

    j' ai un petit soucis qui doit paraitre insignifiant mais bon !!!!!
    j'ai établi un filtre a l'aide de liste déroulante qui fonctionne a peu de chose près, ce qu'il me manque c'est de pouvoir afficher tout mon tableau quand ma valeur de "Endroits" a la valeur de "toutes" et "Etats" a la valeur de "tous".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <td height="30"><div align="center">
                                  <strong>ENDROIT</strong>                              
                                    <select name="Endroits">
    				  <option value="TOUTES">Toutes</option>
                                      <option value="CUISINE">cuisine</option>
                                      <option value="SALLE">salle</option>
                                      <option value="SALLE DE BAIN">salle de bain</option>
     
                                    </select>
                                </div></td>
                            </tr>
     
                            <tr>
                              <td height="30"><div align="center">
                                  <strong>ETAT</strong>
                                    <select name="Etats">
                                      <option value="tous"> Tous  </option>
                                      <option value="neuf"> neuf </option>
                                      <option value="usage"> usage </option>
                                    </select>
    				<input type="submit" value="Envoyer" />
                                </div></td>
                            </tr>
     
                        </div></td>*
     
    $Endroits = ( !empty($_POST['Endroits'])) ? $_POST['Endroits'] : '';
    $Etats = ( !empty($_POST['Etats'])) ? $_POST['Etats'] : '';
     $sql=$pdo->query( "SELECT * FROM table WHERE ETATS = '".$Etats."' AND ENDROITS= '".$Endroits."'");
     while($Resultat =$sql->fetch())
    .....
    merci pour votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Alerte sécurité : Il faut utiliser une requête préparée quand tu passes des données externes.

    Pour le reste, il suffit de définir explicitement dans ton code ce que signifie "tous".

    Au passage ça n'a pas de sens de remplacer le valeur du formulaire par une chaine vide si jamais elle n'était pas fournie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    if (!empty($_POST['Endroits']) && !empty($_POST['Etats'])) {
    if ($_POST['Endroits'] != 'TOUTES') {
       $where[] = 'ENDROITS = ?';
       $param[] = $_POST['Endroits'];
    }
     
    if ($_POST['Etats'] != 'tous') {
       $where[] = 'ETATS = ?';
       $param[] = $_POST['Etats'];
    }
     
    $sql = 'SELECT * FROM table';
    if (isset($where)) {
       $sql .= ' WHERE ' . implode(' AND ', $where);
    }
     
    $sth = $pdo->prepare($sql);
    $sth->execute($param);
    while($sth =$sql->fetch(PDO::FETCH_ASSOC))
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Par défaut
    bonsoir sabotage,
    après applications de tes lignes de codes je me retrouve avec cette ligne d'erreur.
    Fatal error: Call to a member function fetch() on a non-object
    de plus, pourrais tu m'expliquer ce passage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (isset($where)) {
       $sql .= ' WHERE ' . implode(' AND ', $where);
    merci d'avance

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    oups je me suis emmêlé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while($row = $sth->fetch(PDO::FETCH_ASSOC))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql .= ' WHERE ' . implode(' AND ', $where);
    On rassemble tous les éléments mis dans $where séparés par AND
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Par défaut
    Merci pour l'éclaircissement ,d'autre part je n'arrive pas à afficher tout mon tableau malgré que dans mes listes déroulantes sont sélectionnée toutes et tous

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Contrôle $_POST :
    et le $where obtenu :
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire un filtre sur la date
    Par Hatchepsout dans le forum Windows Forms
    Réponses: 8
    Dernier message: 29/06/2007, 14h26
  2. [VBA-Excel] Faire un filtre dans un tableau croisé dynamique
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/11/2006, 15h05
  3. [C#][Débutant] Comment faire un filtre dans un datagriview
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/05/2006, 18h13
  4. Faire un filtre automatique comme dans Excel
    Par ptitdav dans le forum Access
    Réponses: 2
    Dernier message: 19/09/2005, 13h29
  5. Faire un filtre sur un DBGRID
    Par richard038 dans le forum Bases de données
    Réponses: 4
    Dernier message: 04/08/2005, 17h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo