Systeme de recherche
Résolu
Debonzy
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
Debonzy Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
Debonzy Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
Salut chers tous,
Cela fait plusieurs jours que je tente de créer un système de recherche sur mon site web mais en vain. Après avoir regardé plusieurs tuto et après plusieurs essais; je viens solliciter votre aide.
En effet le dernier essai me semble mieux mais ce message d'erreur s'affiche
.
Voici le code php:
Merci de m'aider.
EDIT : Ajout de la coloration syntaxique !
Cordialement
Cela fait plusieurs jours que je tente de créer un système de recherche sur mon site web mais en vain. Après avoir regardé plusieurs tuto et après plusieurs essais; je viens solliciter votre aide.
En effet le dernier essai me semble mieux mais ce message d'erreur s'affiche
Voici le code php:
<?php $resultats = ""; //Traitement de la requete recherche if (isset($_POST['query']) && !empty($_POST['query'])){ // si utilisateur a entre quelque chose, on traite sa requete $query = preg_replace("#[^a-zA-Z ?0-9]#i", "", $_POST['query']); if($_POST['filtre'] == "nomAuteur"){ $sql = "SELECT * FROM bibliotheque_num WHERE nom_auteur LIKE ?"; }else if ($_POST['filtre'] == "typeOeuvre"){ $sql = "SELECT * FROM bibliotheque_num WHERE type_oeuvre LIKE ?"; }else if ($_POST['filtre'] == "nomOeuvre"){ $sql = "SELECT * FROM bibliotheque_num WHERE nom_oeuvre LIKE ?"; } //connexion à la base de données include ("inclu/connexionMysql.inc.php"); $req = $db->prepare($sql); $req->execute(array('%'.$query.'%')); $count = $req->rowCount(); if($count >=1){ echo $count." résultat(s) trouvé(s) pour <strong>$query</strong><hr/>"; while($data = $req->fetch(PDO::FETCH_OBJ)){ echo '#'.$data->ref.' - Nom : '.$data->nom_oeuvre.' - Auteur: '.$data->nom_auteur.' - Type: '.$data->type_oeuvre.'<br/>'; } else { echo "0 résultat trouvé pour <strong>$query</strong><hr/>"; } ?>
Merci de m'aider.
EDIT : Ajout de la coloration syntaxique !
Cordialement
A voir également:
- Systeme de recherche
- Restauration systeme windows 10 - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Vous avez besoin d'une autorisation de la part de système pour modifier ce dossier - Guide
- Recherche photo - Guide
- Je recherche une chanson - Guide
1 réponse
Bonjour,
Tu as oublié l'accolade fermante de ton while.
Mais tiens, essaye ça :
Au passage, je t'invite à lire (et à appliquer) ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
et ça : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Tu as oublié l'accolade fermante de ton while.
Mais tiens, essaye ça :
<?php //connexion à la base de données require_once ("inclu/connexionMysql.inc.php"); //Traitement de la requete recherche //-------------------------------------------------------------// //récupération PROPRE des variables AVANT de les utiliser //-------------------------------------------------------------// $query = !empty($_POST['query']) ? $_POST['query'] : NULL; $filtre = !empty($_POST['filtre']) ? $_POST['filtre'] : NULL; if ($query){ // si utilisateur a entre quelque chose, on traite sa requete $query = preg_replace("#[^a-zA-Z ?0-9]#i", "", $query); switch($filtre){ case "nomAuteur": $strWhere = "WHERE nom_auteur LIKE ?"; break; case "typeOeuvre": $strWhere = "WHERE type_oeuvre LIKE ?"; break; case "nomOeuvre": $strWhere = "WHERE nom_oeuvre LIKE ?"; break; default: $strWhere = ""; break; } $sql = $sql = "SELECT * FROM bibliotheque_num " . $strWhere; $datas = array('%'.$query.'%'); try{ $req = $db->prepare($sql); $req->execute($datas); // on stocke le resultat dans un array $resultat = $req->fetchAll(PDO::FETCH_OBJ); }catch(Exception $e){ echo 'Erreur ! ' .$e->getMessage(); } //$count = $req->rowCount(); NE PAS UTILISER POUR UNE REQUETE SELECT COMME INDIQUE DANS LA DOCUMENTATION OFFICIELLE DE PHP PDO !! // A la place, on peut faire : $count = !empty($resultat) ? count($resultat) : 0; if(!empty($resultat)){ echo count($resultat)." résultat(s) trouvé(s) pour <strong>".$query."</strong><hr/>"; foreach($resultat as $data){ echo '#'.$data->ref.' - Nom : '.$data->nom_oeuvre.' - Auteur: '.$data->nom_auteur.' - Type: '.$data->type_oeuvre.'<br/>'; } } else { echo "0 résultat trouvé pour <strong>$query</strong><hr/>"; } } ?>
Au passage, je t'invite à lire (et à appliquer) ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
et ça : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Cordialement