- Mx47,
Bonsoir tout le monde. C’est mon premier topic sur le forum, donc soyez indulgents si je fais des erreurs svp ^^. J’ai commencé à créer un moteur de recherche basique en PHP et MySQL, sauf que mes résultats ne s’affichent pas: ma page s’affiche sans erreurs, mais lorsque j’entre un auteur dans mon champ de recherche, et que j’exécute ma requête, il ne trouve aucun résultat, alors qu’il devrait en avoir au moins 1.
Le but est d’effectuer une recherche bibliographique dans une base de données nommée ’bibli’. J’aimerais donc qu’en cherchant un auteur dans la table ’authors’ de cette BDD, on puisse tomber sur le nombre de livres écrit par cet auteur, ainsi que leur titre, dont les références sont stockées dans la table ’notices’.
Voilà le schéma de ma BDD (c’est fait à la va-vite avec Paint hein, c’est pas du grand art ^^):
Voilà mon code pour que vous puissiez tester par vous-mêmes:
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Moteur de recherche</title> </head> <body> <form action=<?php echo $_SERVER['PHP_SELF']; ?> method="post"> <label for="search">Entrez votre recherche: </label> <input type="search" name="search" value=""> <input type="submit" name="submit" value="valider"> </form> </body> </html> <?php //Initialisation de la variable $resultats $resultats = ""; //traitement de la requête if (isset($_POST['search']) && !empty ($_POST['search'])) { //on vérifie si l'utilisateur a entré des termes à rechercher, et on traite sa requête //connexion à la base de données try { $db = new PDO('mysql:host=localhost;dbname=bibli', 'root',''); } catch (PDOException $e) { die($e.getMessage()); } $query = preg_replace("#[^a-zA-Z ? 0-9]#i", "", $_POST['search']); //Requête de sélection MySQL $req = $db->prepare("(SELECT * FROM authors WHERE author_name AS nom LIKE ?) UNION (SELECT * FROM notices WHERE tit1 AS titre LIKE ?)"); $req->execute(array('%' . $query . '%', '%' . $query . '%')); //On compte les résultats $count = $req->rowCount(); //On traite les résultats if ($count >= 1) { echo "$count résultats trouvés pour <strong> '$query' </strong> \n '$req'"; while ($data = $req->fetch(PDO::FETCH_OBJ)) { echo "Auteur :" . $data->nom . ", titre : " . $data->titre; } } else { echo "\n <hr /> Aucun résultat trouvé pour <strong> '$query' </strong> \n"; } } ?> <?php echo "\n" . $resultats ?> |
Je tiens à préciser que ce code a été adapté de celui d’une vidéo Youtube (Les teachers du Net, "Créer un moteur de recherche en PHP pour votre site"), et que je suis plutôt débutant en PHP (j’ai suivi le cours dédié à PHP/MySQL d’Openclassrooms avant de découvrir ce site prometteur ).
D’avance merci pour votre aide!