par
jam' » 03 déc. 2005, 14:51
Bonjour a toute la communauté phpFrance,
Voici mon problème:
Je cherche a faire une recherche sur un table par rapport a 1 ou plusieur critere de recherche que l'utilisateur aura rentré dans un formulaire au préalable.
Voici le code ou se trouve la requete :
<?php
$NF = $_POST['NF'];
$AF = $_POST['AF'];
$NR = $_POST['NR'];
$NA1 = $_POST['NA1'];
$NA2 = $_POST['NA2'];
$NA3 = $_POST['NA2'];
//connect to the DB and select the "film" database
$connection = mysql_connect('localhost','admin','admin') or die(mysql_error());
mysql_select_db('film', $connection) or die(mysql_error());
//set up the query
$requete = "SELECT * FROM film WHERE 1=1";
if($NF!="") $requete .="AND NomFilm = '".$NF."%'";
if($AF!="") $requete .="AND AnneeFilm = '".$AF."'";
if($NR!="") $requete .="AND RealFilm = '".$NR."'";
if($NA1!="") $requete .="AND Acteur1Film = '".$NA1."'";
if($NA2!="") $requete .="AND Acteur2Film = '".$NA2."'";
if($NA3!="") $requete .="AND Acteur3Film = '".$NA3."'";
//run the query and get the number of affected rows
$result = mysql_query($requete, $connection) or die('error making query');
$affected_rows = mysql_num_rows($result);
//if there's exactly one result, the user is validated. Otherwise, he's invalid
if($result = mysql_query($requete)) {
while($ligne = mysql_fetch_row($result)) {
$nom = $ligne[1];
$duree = $ligne[2];
$cat = $ligne[3];
$annee = $ligne[4];
$desc = $ligne[5];
echo "$nom, $duree, $cat, $annee, $desc <br />";
}
} else {
echo "Erreur de requête de base de données.";
}
?>
et voici le code du formulaire :
Code : Tout sélectionner
<form name="form1" method="post" action="resultat.php">
Recherche de film !
<br>
<br>
Nom du film :
<input type="text" name="NF">
<br>
Année du film:
<input type="text" name="AF">
<br>
Type de film :
<select name="select">
</select>
<br>
Réalisateur:
<input type="text" name="NR">
<br>
Acteur(s) :
<input type="text" name="NA1">
<input type="text" name="NA2">
<input type="text" name="NA3">
<br>
<br>
<input type="submit" name="Valider" value="Envoyer">
<input type="submit" name="Effacer" value="Annuler">
</form>
Le souci c'est que ma requete ne marche pas lorsque la personne entre 1 critere de recherche.
PS: la personne peut recherche la liste des film sur 1 ou plusieurs critères. Donc les champ ne sont pas toujours rempli
D'avance merci
Bonjour a toute la communauté phpFrance,
Voici mon problème:
Je cherche a faire une recherche sur un table par rapport a 1 ou plusieur critere de recherche que l'utilisateur aura rentré dans un formulaire au préalable.
Voici le code ou se trouve la requete :
[php]<?php
$NF = $_POST['NF'];
$AF = $_POST['AF'];
$NR = $_POST['NR'];
$NA1 = $_POST['NA1'];
$NA2 = $_POST['NA2'];
$NA3 = $_POST['NA2'];
//connect to the DB and select the "film" database
$connection = mysql_connect('localhost','admin','admin') or die(mysql_error());
mysql_select_db('film', $connection) or die(mysql_error());
//set up the query
$requete = "SELECT * FROM film WHERE 1=1";
if($NF!="") $requete .="AND NomFilm = '".$NF."%'";
if($AF!="") $requete .="AND AnneeFilm = '".$AF."'";
if($NR!="") $requete .="AND RealFilm = '".$NR."'";
if($NA1!="") $requete .="AND Acteur1Film = '".$NA1."'";
if($NA2!="") $requete .="AND Acteur2Film = '".$NA2."'";
if($NA3!="") $requete .="AND Acteur3Film = '".$NA3."'";
//run the query and get the number of affected rows
$result = mysql_query($requete, $connection) or die('error making query');
$affected_rows = mysql_num_rows($result);
//if there's exactly one result, the user is validated. Otherwise, he's invalid
if($result = mysql_query($requete)) {
while($ligne = mysql_fetch_row($result)) {
$nom = $ligne[1];
$duree = $ligne[2];
$cat = $ligne[3];
$annee = $ligne[4];
$desc = $ligne[5];
echo "$nom, $duree, $cat, $annee, $desc <br />";
}
} else {
echo "Erreur de requête de base de données.";
}
?>[/php]
et voici le code du formulaire :
[code]<form name="form1" method="post" action="resultat.php">
Recherche de film !
<br>
<br>
Nom du film :
<input type="text" name="NF">
<br>
Année du film:
<input type="text" name="AF">
<br>
Type de film :
<select name="select">
</select>
<br>
Réalisateur:
<input type="text" name="NR">
<br>
Acteur(s) :
<input type="text" name="NA1">
<input type="text" name="NA2">
<input type="text" name="NA3">
<br>
<br>
<input type="submit" name="Valider" value="Envoyer">
<input type="submit" name="Effacer" value="Annuler">
</form>[/code]
Le souci c'est que ma requete ne marche pas lorsque la personne entre 1 critere de recherche.
PS: la personne peut recherche la liste des film sur 1 ou plusieurs critères. Donc les champ ne sont pas toujours rempli
D'avance merci