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

PHP & Base de données Discussion :

Faire une recherche avec plusieurs critères à partir de formulaires ?


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2021
    Messages : 4
    Par défaut Faire une recherche avec plusieurs critères à partir de formulaires ?
    Bonjour,

    J'aimerai faire un site internet qui affiche toute ma base de données quand je ne choisi aucun critère dans mon menu, mais lorsque je choisis un ou plusieurs critères et que j'appuie sur valider, seul les élèments qui correspondent aux critères s'affichent.
    J'ai donc fait cela sur une page que j'ai nommé catalogue.php pour sélectionner les critères que l'on veut voir apparaitre :
    Code HTML : 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
    32
    33
    34
    35
    36
    37
                      <form method="POST" action="catalogue.php">
                        <fieldset>
                        <input type="radio" name="motif" value="soleil" id="soleil"/>
                          <label for="soleil"> Soleil</label><br>
                          <input type="radio" name="motif" value="lune" id="lune" />
                          <label for="lune"> Lune</label><br>
                          <input type="radio" name="motif" value="etoile" id="etoile" />
                          <label for="etoile"> Étoile</label><br>
                          <input type="radio" name="motif" value="planete" id="planete"/>
                          <label for="planete"> Planéte</label>
                        </fieldset>
                        <input type="submit" name="typemotif" value="Valider">
                      </form>
     
                      <form method="POST" action="catalogue.php">
                        <fieldset>
                        <input type="radio" name="position" value="Droite" id="Droite" />
                          <label for="Droite"> Droite</label><br>
                          <input type="radio" name="position" value="Gauche" id="Gauche" />
                          <label for="Gauche"> Gauche</label>
                        </fieldset>
                        <input type="submit" name="typeposition" value="Valider">
                      </form>
     
                     <form method="POST" action="catalogue.php">
                        <fieldset>
                        <input type="radio" name="couleur" value="bleu" id="bleu"/>
                          <label for="bleu"> Bleu</label><br>
                          <input type="radio" name="couleur" value="rouge" id="rouge" />
                          <label for="rouge"> Rouge</label><br>
                          <input type="radio" name="couleur" value="vert" id="vert" />
                          <label for="vert"> Vert</label><br>
                          <input type="radio" name="couleur" value="jaune" id="jaune"/>
                          <label for="jaune"> Jaune</label>
                        </fieldset>
                        <input type="submit" name="typecouleur" value="Valider">
                      </form>

    Ensuite dans la balise <head> </head> de cette même page (catalogue.php), j'ai écrit ce code pour chercher ces critères dans la base de données:

    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
    <?php
      session_start();
      require_once('BD.php');
      $bdd = getBD();
     
       $req="SELECT * FROM catalogue"
     
        if (isset($_POST['motif'])) {
        $motif = $_SESSION['motif'] = "'" . $_POST['motif'] . "'";
        $req = $req . " AND catalogue.motif = $motif";
      }
     
      if (isset($_POST['position'])) {
        $position = $_SESSION['position'] ="'" . $_POST['position'] . "'";
        $req = $req . " AND catalogue.position = $position";
      }
     
      if (isset($_POST['couleur'])) {
        $couleur= "'" . $_POST['couleur'] . "'";
        $req = $req . " AND catalogue.couleur = $couleur";
      }
     
      $res = $bdd->query($req);
     
     
      ?>
    Avec ce code j'ai toute ma base de données qui s'affiche quand j'arrive sur la page et que je n'ai choisi aucun critère comme je voulais, seulement dès que je coche n'importe quel critère je n'ai plus rien qui s'affiche sur la page.

    Je débute dans la programmation en php, peut être que mes erreurs sont évidentes je suis désolée, mais pourriez vous m'aider svp ?

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    AFfiches ta requête générée , tu devrais voir qu'il te manque une close WHERE. Tu devrais d'ailleurs avoir l'information dans le message d'erreur que doit retourner PHP.

    Note : pour ce genre de chose on utilise plutôt un formulaire en GET et non en POST
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2021
    Messages : 4
    Par défaut
    Merci de m'avoir répondu!
    Il faudrait que je rajoute "WHERE" après tous mes "AND" peut être ? Parce que je n'ai pas de message d'erreur sur PHP.
    Je vais changer mes POST en GET aussi, merci.

    Citation Envoyé par grunk Voir le message
    AFfiches ta requête générée , tu devrais voir qu'il te manque une close WHERE. Tu devrais d'ailleurs avoir l'information dans le message d'erreur que doit retourner PHP.

    Note : pour ce genre de chose on utilise plutôt un formulaire en GET et non en POST

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 672
    Par défaut
    Citation Envoyé par emmanse Voir le message
    Il faudrait que je rajoute "WHERE" après tous mes "AND" peut être ?
    cela ne se fait pas au hasard. il faut d'abord que vous réfléchissez quelle est la requête sql que vous voulez obtenir :
    https://dev.mysql.com/doc/refman/8.0/en/select.html

    ensuite, la 2e étape est de construire cette requête en php.

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    En complément de la réponse de mathieu

    Parce que je n'ai pas de message d'erreur sur PHP.
    C'est normal, tu ne fais aucune vérif.

    Avec le gestionnaire PDO il faudrait faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $result = $pdo->query($req);
    if ($result === false) {
        print_r($pdo->errorInfo());
    }
    À voir selon ton script.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2021
    Messages : 4
    Par défaut
    C'est bon j'ai pu régler mon problème, j'ai remplacé les "AND" par des "WHERE" dans mes requêtes PHP, je ne sais pas si c'était la bonne chose à faire mais ça a marché!
    Merci beaucoup de m'avoir aidé.

Discussions similaires

  1. [XL-2010] Faire une recherche dans plusieurs feuilles à partir du CheckBox
    Par elodiin dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/07/2017, 12h03
  2. [PDO] Comment faire une recherche sur plusieurs critères ?
    Par geeka dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 28/05/2015, 10h19
  3. faire une recherche avec plusieurs mot-clés
    Par jakouz dans le forum Débuter
    Réponses: 2
    Dernier message: 16/12/2010, 13h50
  4. Réponses: 1
    Dernier message: 18/09/2010, 02h40
  5. VBA-E Comment réaliser une recherche avec plusieurs critères ?
    Par Larsen21 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 14/12/2006, 13h43

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