Requetes avancées sql
Résolu
Fetide68
Messages postés
745
Date d'inscription
Statut
Membre
Dernière intervention
-
internaute -
internaute -
Bonjour,
Je fais de petits exercices d'entraînement php/MySql. Actuellement je m'entraîne sur une base de films sur laquelle je cherche à faire une recherche avancée.
Je peut faire une recherche sur le titre, le genre (comédie, action,...) et la nationalité. Seulement je ne sais pas comment faire ma requête si par exemple seuls deux champs sont renseignés... ?
Je teste si le formulaire est rempli sur le bouton validé :
Et je fais ma requête... :
Genre et nationalité sont gérées à partir de listes de choix. Mais la requête ne fonctionne que sur 1 champ !
Je fais de petits exercices d'entraînement php/MySql. Actuellement je m'entraîne sur une base de films sur laquelle je cherche à faire une recherche avancée.
Je peut faire une recherche sur le titre, le genre (comédie, action,...) et la nationalité. Seulement je ne sais pas comment faire ma requête si par exemple seuls deux champs sont renseignés... ?
Je teste si le formulaire est rempli sur le bouton validé :
<input name="valider" value="Go"" /> if ($_POST['valider'] == "Go")...
Et je fais ma requête... :
mysql_query ("SELECT * FROM films WHERE titre LIKE '%$titre%' AND genre = '$genre' AND nationalite = '$nationalite'");
Genre et nationalité sont gérées à partir de listes de choix. Mais la requête ne fonctionne que sur 1 champ !
A voir également:
- Requetes avancées sql
- Accéder aux options de démarrage avancées de windows 10 - Guide
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Jointure sql ✓ - Forum MySQL
- Sql query download - Télécharger - Gestion de données
7 réponses
Bonjour,
Tu peux scindé ta requête sql et y ajouter les conditions en fonction des valeurs du formulaire.
Tu peux scindé ta requête sql et y ajouter les conditions en fonction des valeurs du formulaire.
$query = "SELECT * FROM films"; if ($titre != '') { $query += "WHERE titre LIKE '%$titre%'"; } if ($genre != '') { if ($titre != '') { $query += "AND genre = '$genre'"; } else { $query += "WHERE genre = '$genre'"; } etc... mysql_query($query);
Le truc c'est que là, j'ai simplifié la table. Elle a quelques champs en plus. En plus, c'est un exercice... j'aimerais trouver la solution.
S'il faut faire des recherche comme ça, j'ai pas fini... Mais merci quand même...
S'il faut faire des recherche comme ça, j'ai pas fini... Mais merci quand même...
$recherche = mysql_query ("SELECT * FROM films WHERE type LIKE '%$type%' AND genre LIKE '%$genre%' AND nationalite LIKE '%$nationalite%' AND duree BETWEEN '$min' AND '$max' AND titre LIKE '%$recherche%' OR realisateur LIKE '%$recherche%' OR acteurs LIKE '%$recherche%' ");
La variable récupère le champs 'recherche' et permet comme vous pouvez le voir, de chercher le titre du film ou le nom ou prénom d'un acteur ou d'un realisateur. La dernière ligne de la requête semble problématique.
Si je mets des AND à la place des OD ou des OR à la place des AND, ça marche plus. OR ca ne m'arrange pas haha... Merci !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question