Moteur de recherche plusieurs catégories
raven37
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Voila, j'ai une base de donnée, je peux faire des recherches grâce à un mot clé, ca marche très bien.
Mon problème est que ma table est vaste et j'aimerai pouvoir filtrer par catégories.
Exemple, je cherche le mot "permis" et je sélectionne la langue française pour filtrer les résultats.
J'arrive à filtrer pour une catégorie, mais sans pouvoir chercher le mot, ou l'inverse.
Mon champ de recherche:
</form><form method="GET">
<input type="search" name="q" placeholder="Recherche..." style="width: 300px; height: 40px;"/>
<input type="submit" value="Valider" style="width: 75px; height: 40px;" />
Mon code PHP ( je met juste la fonction lié à la recherche et l'affichage):
Je cherche depuis 1 semaine, je n'arrive pas à faire les deux, chercher un mot clé et sélectionner une catégorie.
Voila, j'ai une base de donnée, je peux faire des recherches grâce à un mot clé, ca marche très bien.
Mon problème est que ma table est vaste et j'aimerai pouvoir filtrer par catégories.
Exemple, je cherche le mot "permis" et je sélectionne la langue française pour filtrer les résultats.
J'arrive à filtrer pour une catégorie, mais sans pouvoir chercher le mot, ou l'inverse.
Mon champ de recherche:
</form><form method="GET">
<input type="search" name="q" placeholder="Recherche..." style="width: 300px; height: 40px;"/>
<input type="submit" value="Valider" style="width: 75px; height: 40px;" />
Mon code PHP ( je met juste la fonction lié à la recherche et l'affichage):
$permis1 = $bdd->query('SELECT * FROM permis1 WHERE Titre LIKE "%'.$q.'%" ORDER BY id '); if($permis1->rowCount() == 0) { $permis1 = $bdd->query('SELECT * FROM permis1 WHERE CONCAT(Titre, Lien, Type, duree) LIKE "%'.$q.'%" ORDER BY id ');
Je cherche depuis 1 semaine, je n'arrive pas à faire les deux, chercher un mot clé et sélectionner une catégorie.
A voir également:
- Moteur de recherche plusieurs catégories
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Google moteur de recherche page d'accueil - Guide
- Copernic moteur de recherche - Télécharger - Navigateurs
- Copernic Desktop Search - Télécharger - Utilitaires
- Recherche de pairs utorrent ✓ - Forum Téléchargement
2 réponses
Bonjour
Connais tu le langage sql ?
Sais tu que dans un where tu peux mettre plusieurs conditions en utilisant des AND ou des OR
Connais tu le langage sql ?
Sais tu que dans un where tu peux mettre plusieurs conditions en utilisant des AND ou des OR
Avec ce code la, j'ai ma table qui s'affiche très bien et aucun soucis pour rechercher un mot clé.
Mon problème, c'est que si je rajoute une recherche par catégorie, comme:
et ensuite un AND LIKE "%'.$Duree.'%" à la suite de la ligne
Ça continue à afficher seulement mon premier mot clé
<?php $bdd = new PDO('mysql:host=localhost;dbname=;charset=utf8','',''); $permis1 = $bdd->query('SELECT * FROM permis1 ORDER BY ID '); if(isset($_GET['q']) AND !empty($_GET['q'])) { $q = htmlspecialchars($_GET['q']); $permis1 = $bdd->query('SELECT * FROM permis1 WHERE Titre LIKE "%'.$q.'%" ORDER BY id '); if($permis1->rowCount() == 0) { $permis1 = $bdd->query('SELECT * FROM permis1 WHERE CONCAT(Titre, Lien, Type, duree) LIKE "%'.$q.'%" ORDER BY id '); } } ?> <div class="container"> </form><form method="GET"> <input type="search" name="q" placeholder="Recherche..." style="width: 300px; height: 40px;"/> <input type="submit" value="Valider" style="width: 75px; height: 40px;" /> <?php if($permis1->rowCount() > 0) { ?> <table class="table table-striped " >
Mon problème, c'est que si je rajoute une recherche par catégorie, comme:
</form><form method="GET">
<input type="search" name="q" placeholder="Recherche..." style="width: 300px; height: 40px;"/>
<label for="Duree">Duree : </label>
<SELECT name="Duree" size="1">
<OPTION>Sans objet
<OPTION>30 jours ou moins
<input type="submit" value="Valider" style="width: 75px; height: 40px;" />
et ensuite un AND LIKE "%'.$Duree.'%" à la suite de la ligne
$permis1 = $bdd->query('SELECT * FROM permis1 WHERE Titre LIKE "%'.$q.'% AND LIKE "%'.$Duree.'% " ORDER BY id ')
Ça continue à afficher seulement mon premier mot clé
Je recommence....
Commence par appliquer ceci : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et également ça :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
ta requête est fausse... Tu as légèrement oublié d'indiquer sur quel champ rechercher ta "duree"
Je précise également que la fonction htmlspecialchars ne doit pas être utilisée pour stocker des données en BDD ni pour les "lire"...
Cette fonction ne doit être utilisée QUE lors d'affichage sur une page.
Sache également que la fonction rowCount() ( en PDO) ne DOIT PAS s'utiliser sur une requête SELECT (tel qu'expliqué dans la documentation officielle )
Commence par appliquer ceci : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et également ça :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
ta requête est fausse... Tu as légèrement oublié d'indiquer sur quel champ rechercher ta "duree"
SELECT * FROM permis1 WHERE Titre LIKE "%'.$q.'%" AND `LENOMDUCHAMPOUCHERCHER`LIKE "%'.$Duree.'%" ORDER BY id '
Je précise également que la fonction htmlspecialchars ne doit pas être utilisée pour stocker des données en BDD ni pour les "lire"...
Cette fonction ne doit être utilisée QUE lors d'affichage sur une page.
Sache également que la fonction rowCount() ( en PDO) ne DOIT PAS s'utiliser sur une requête SELECT (tel qu'expliqué dans la documentation officielle )
Oui j'ai essayer, en mettant plusieurs formulaires comme :
Et ensuite essayé avec un AND et comme resultat j'ai soit l'un soit l'autre mais pas les deux ( le mot clé et la catégorie)
Tu ne dois mettre qu'un seul formulaire....
Et dedans... mettre les différents critères sur lesquels tu veux faire ta recherche...
Bien entendu.. si tu ne nous montres pas EXACTEMENT le code du formulaire en question avec le code PHP qui fait la recherche ensuite.. on ne pourra pas t'aider à le corriger.
Sachant que dans le code de formulaire que tu nous montres il y a pas mal d'erreurs...
Le formulaire n'est pas fermé
Le select n'est pas fermé non plus
Je t'invite, au passage, à lire ET APPLIQUER le contenu de ce lien :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Cela devrait t'aider à corriger pas mal de soucis...