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 :
Le code HTML du champs de recherche :
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 de l'affiche des résultats :
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>
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
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>
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.
Partager