Moteur de recherche plusieurs catégories
Fermé
raven37
Messages postés
3
Date d'inscription
jeudi 12 septembre 2019
Statut
Membre
Dernière intervention
13 septembre 2019
-
12 sept. 2019 à 23:10
jordane45 Messages postés 38366 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 janvier 2025 - 13 sept. 2019 à 22:09
jordane45 Messages postés 38366 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 janvier 2025 - 13 sept. 2019 à 22:09
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
- Safari moteur de recherche - Télécharger - Navigateurs
- Installer qwant moteur de recherche - Télécharger - Navigateurs
2 réponses
jordane45
Messages postés
38366
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 janvier 2025
4 720
12 sept. 2019 à 23:23
12 sept. 2019 à 23:23
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
raven37
Messages postés
3
Date d'inscription
jeudi 12 septembre 2019
Statut
Membre
Dernière intervention
13 septembre 2019
Modifié le 13 sept. 2019 à 21:47
Modifié le 13 sept. 2019 à 21:47
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é
jordane45
Messages postés
38366
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 janvier 2025
4 720
Modifié le 13 sept. 2019 à 22:10
Modifié le 13 sept. 2019 à 22:10
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 )
13 sept. 2019 à 15:16
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)
13 sept. 2019 à 18:32
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...