Bonsoir, tout d'abord merci à ceux qui prendront le temps de lire ce message.
Je me suis amusé à crée un petit sie web en local où j'ai référencé les films que je possédais. J'y ai crée un formulaire de recherche de film avec les éléments suivants:
- Genre
- Nationalite
- Epoque
- Acteur
- Realisateur
Je souhaite pour le moment faire en sorte que la recherche fonctionne si l'utilisateur ne remplit qu'un de ces 5 champs
J'ai fais un premier essai qui fonctionne, bien que cela ne soit pas ce que je veux:
<?php
if (isset($_POST['genre']) OR isset($_POST['nationalite']) OR isset($_POST['epoque']) OR isset($_POST['acteur']) OR isset($_POST['realisateur']))
{
$req = $bdd->prepare('SELECT titre, resume, annee, realisateur, pochette, acteur, genre FROM film WHERE (acteur LIKE :acteur )') ;
$req -> execute(array(
'acteur' => '%'.$_POST['acteur'].'%',
));
?>
Comme vous pouvez le constater, j'ai ici utilisé une requête préparée avec un LIKE afin de faire en sorte que si l'utilisateur ne se souvient qu'une partie du nom de l'acteur, cela fonctionne.
Ce code fonctionne très bien. Cependant je souhaite faire une requête préparée avec les 5 éléments de mon formulaire, j'ai donc essayé le code suivant:
<?php
if (isset($_POST['genre']) OR isset($_POST['nationalite']) OR isset($_POST['epoque']) OR isset($_POST['acteur']) OR isset($_POST['realisateur']))
{
$req = $bdd->prepare('SELECT titre, resume, annee, realisateur, pochette, acteur, genre FROM film WHERE (genre=:genre OR nationalite=:nationalite OR epoque=:epoque OR acteur LIKE :acteur OR realisateur LIKE :realisateur)') ;
$req -> execute(array(
'genre' => $_POST['genre'],
'nationalite' => $_POST['nationalite'],
'epoque' => $_POST['epoque'],
'acteur' => '%'.$_POST['acteur'].'%',
'realisateur' => '%'.$_POST['realisateur'].'%'
));
?>
Malheureusement, ce code ne fonctionne pas, il m'affiche tous les films et ne prend donc pas en compte les WHERE (de plus même si je ne remplis aucun champ, il me sélectionne tous les films et ce malgré le isset.
Je pense donc qu'il s'agit d'un problème de syntaxe dans ma requête mais j’avoue ne pas savoir que faire pour que mon formulaire puisse fonctionner correctement.
En espérant trouver une solution sur ce forum, je vous souhaite à toutes et à tous une bonne soirée

Bonsoir, tout d'abord merci à ceux qui prendront le temps de lire ce message.
Je me suis amusé à crée un petit sie web en local où j'ai référencé les films que je possédais. J'y ai crée un formulaire de recherche de film avec les éléments suivants:
- Genre
- Nationalite
- Epoque
- Acteur
- Realisateur
Je souhaite pour le moment faire en sorte que la recherche fonctionne si l'utilisateur ne remplit qu'un de ces 5 champs
J'ai fais un premier essai qui fonctionne, bien que cela ne soit pas ce que je veux:
[php]<?php
if (isset($_POST['genre']) OR isset($_POST['nationalite']) OR isset($_POST['epoque']) OR isset($_POST['acteur']) OR isset($_POST['realisateur']))
{
$req = $bdd->prepare('SELECT titre, resume, annee, realisateur, pochette, acteur, genre FROM film WHERE (acteur LIKE :acteur )') ;
$req -> execute(array(
'acteur' => '%'.$_POST['acteur'].'%',
));
?>[/php]
Comme vous pouvez le constater, j'ai ici utilisé une requête préparée avec un LIKE afin de faire en sorte que si l'utilisateur ne se souvient qu'une partie du nom de l'acteur, cela fonctionne.
Ce code fonctionne très bien. Cependant je souhaite faire une requête préparée avec les 5 éléments de mon formulaire, j'ai donc essayé le code suivant:
[php]<?php
if (isset($_POST['genre']) OR isset($_POST['nationalite']) OR isset($_POST['epoque']) OR isset($_POST['acteur']) OR isset($_POST['realisateur']))
{
$req = $bdd->prepare('SELECT titre, resume, annee, realisateur, pochette, acteur, genre FROM film WHERE (genre=:genre OR nationalite=:nationalite OR epoque=:epoque OR acteur LIKE :acteur OR realisateur LIKE :realisateur)') ;
$req -> execute(array(
'genre' => $_POST['genre'],
'nationalite' => $_POST['nationalite'],
'epoque' => $_POST['epoque'],
'acteur' => '%'.$_POST['acteur'].'%',
'realisateur' => '%'.$_POST['realisateur'].'%'
));
?>[/php]
Malheureusement, ce code ne fonctionne pas, il m'affiche tous les films et ne prend donc pas en compte les WHERE (de plus même si je ne remplis aucun champ, il me sélectionne tous les films et ce malgré le isset.
Je pense donc qu'il s'agit d'un problème de syntaxe dans ma requête mais j’avoue ne pas savoir que faire pour que mon formulaire puisse fonctionner correctement.
En espérant trouver une solution sur ce forum, je vous souhaite à toutes et à tous une bonne soirée :)