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 :

[Débutant] Recherche champs multiples


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Février 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2019
    Messages : 13
    Points : 7
    Points
    7
    Par défaut [Débutant] Recherche champs multiples
    Bonjour à tous,

    Malgré mon niveau en PHP, j'ai décidé de me retrousser les manches et de m'attaquer à quelque chose qui m'a l'air assez costaud afin de développer un projet.
    J'ai développé un site qui référencie une liste d'événement, je vous mets le lien : www.rubbber.cc , ça vous aidera peut être à comprendre le concept ainsi que ce que j'aimerais y apporter en plus.
    Pour l'instant le projet est purement en statique, je dois donc toujours aller dans le code pour effectuer des mises à jour.

    Je suis donc actuellement en train de travailler sur le faire de rendre tout ça dynamique et j'ai déjà réussi à créer la BDD, créé une sorte de panel admin qui me permet d'ajouter des events dans la BDD, de les modifier et les supprimer.
    Ceci étant fait, j'aimerais un peu faciliter la vie de mes utilisateurs en y ajoutant la possibilité de faire une recherche ou de filtrer l'affichage.

    J'ai donc pour cela créé un premier champs de recherche qui fonctionne.
    En voici le code PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $bdd = new PDO("mysql:host=localhost;dbname=rubbber_data;charset=utf8", "root", "");
     
      $get = $bdd->query("SELECT * FROM upcoming_events order by event_date asc");
     
      if(isset($_GET['keyword']) AND !empty($_GET['keyword'])) {
          $q = htmlspecialchars($_GET['keyword']);
          $q = $_GET['keyword'];
          $q = trim($q); //pour supprimer les espaces dans la requête de l'internaute
          $q = strip_tags($q); //pour supprimer les balises html dans la requête
          $get = $bdd->query('SELECT event_name, event_date, event_day, event_month, event_category, event_city, event_country, event_url, event_website, event_facebook, event_instagram, event_register, event_banner, event_info, event_event, event_rules, event_track, event_trackimage, event_address, event_googlemap FROM upcoming_events WHERE event_name LIKE "%'.$q.'%" ORDER BY id ASC');
          if($get->rowCount() == 0) {
            $get = $bdd->query('SELECT event_name, event_date, event_day, event_month, event_category, event_city, event_country, event_url, event_website, event_facebook, event_instagram, event_register, event_banner, event_info, event_event, event_rules, event_track, event_trackimage, event_address, event_googlemap FROM upcoming_events WHERE CONCAT(event_name, event_date, event_day, event_month, event_category, event_city, event_country, event_url, event_website, event_facebook, event_instagram, event_register, event_banner, event_info, event_event, event_rules, event_track, event_trackimage, event_address, event_googlemap) LIKE "%'.$q.'%" ORDER BY id ASC');
          }
    }
    Le code HTML du champs de recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form class="searchbox" method="GET">
                            <input type="search" name="keyword" placeholder="" />
                            <input type="submit" value="Go" />
                            </form>
    Le code de l'affiche des résultats :

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
     <table class="calendarupcoming">
                                <?php
                                    if($get->rowCount() > 0) {
                                    while($show = $get->fetch())
                                    {
                                ?>
     
                                  <tr>
                                      <td>
                                        <ul class="date">
                                          <li class="day"><?php echo $show['event_date']?></li>
                                          <li class="month"><?php echo $show['event_month']?></li>
                                        </ul>
                                      </td>
                                      <td>
                                          <a href="<?php echo $show['event_url']?>" target="_self">
                                              <ul class="place">
                                                  <li class="category_list">
                                                    <ul>
                                                      <li><?php echo $show['event_category']?></li>
                                                    </ul>
                                                  </li>                 
                                                  <li class="eventname"><?php echo $show['event_name']?></li>
                                                  <li class="eventplace"><?php echo $show['event_city']?>, <?php echo $show['event_country']?></li>               
                                              </ul>
                                          </a>
                                      </td>
                                    </tr>
                                    <?php
              }
            }
              else {
            ?>
              <br />
              <br />
              <p class="nothingfound">It looks like there's no race for what you're looking for...</p>
            <?php
              }
            ?>
                              </table>
    Dans ma table, j'ai plusieurs lignes : event_name, event_date, event_day, event_month, event_category, event_city, event_country, event_url, event_website, event_facebook, event_instagram, event_register, event_banner, event_info, event_event, event_rules, event_track, event_trackimage, event_address, event_googlemap
    Je souhaites n'effectuer une recherche textuelle grace à mon formulaire qu'ai sein des lignes suivantes : event_name, event_month, event_category, event_city, event_country

    Ensuite, j'aimerais ajouter d'autres champs de recherche (ou plutôt des filtes, donc des listes déroulantes).
    Par exemple : une liste déroulante pour les catégories et qui irait seulement chercher dans event_category, une liste déroulante pour les mois qui irait seulement chercher dans event_month, etc.. etc..

    On m'a également dit qu'il fallait que je prépare ma requête afin de sécuriser tout ça et éviter les injections SQL, si quelqu'un peut également m'orienter sur ce sujet, je lui en serais très reconnaissant!
    Car actuellement, sur mon panel admin, pour créer/modifier/supprimer j'utilise un prepare ($requete = $bdd->preprare; $requete->execute) mais je ne vois pas comment le faire dans le cas du formulaire de recherche.

  2. #2

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Février 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2019
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Salut jreaux62,

    Merci pour ta réponse et ton lien.
    Après avoir retourné ton code, j'ai un peu du mal à le comprendre je t'avoue.

    J'ai bien peur que ton tuto soit destiné à une personne ayant un niveau supérieur au miens.

    Ce qui me perd le plus, c'est que je ne sais absolument pas où je dois ajouter/modifier des informations "comme des FROM et des WHERE" par exemple.
    Une deuxième chose que je ne comprends pas, c'est qu'habituellement je fais appel à ma BDD à chaque début de page.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd = new PDO("mysql:host=localhost;dbname=rubbber_data;charset=utf8", "root", "");
    or avec ton code, je ne sais pas où elle est appelée.

  4. #4
    Invité
    Invité(e)
    Dernière modification par Invité ; 31/01/2020 à 12h02.

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/10/2019, 16h59
  2. [XL-2010] Recherche avec LIKE donc un champ multiple
    Par tony76 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/11/2016, 21h58
  3. Requête pour une recherche sur champs multiple d'une table
    Par fred777 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 07/10/2008, 16h33
  4. [Débutant]Recherche sur plusieurs champs
    Par Touareg dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/03/2007, 14h04
  5. Débutant recherche SGBD ... (mylittlebase ?)
    Par Phil39 dans le forum Débuter
    Réponses: 1
    Dernier message: 10/10/2004, 10h25

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