Requete Multi Critères

jam'
Invité n'ayant pas de compte PHPfrance

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&eacute;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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 déc. 2005, 14:58

Salut,
Le souci c'est que ma requete ne marche pas lorsque la personne entre 1 critere de recherche.
Un message d'erreur ? si oui ça aide pour comprendre le probleme.

mais tu peut deja afficher la requete gén érée:
echo $requete;
et verifier la structure.

et donc tu vera certainement que les clauses sont collées les unes aux autres, il faut espacer les concaténation:
$requete .=" AND NomFilm = '".$NF."%' ";
avec un espace en debut et un autre en fin de concaténation.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

jam'
Invité n'ayant pas de compte PHPfrance

03 déc. 2005, 15:02

:oops: Mais quel *** sa marchait pas juste a casue des espace. MErci en tout cas pour cette réponse rapidede ta part. :lol: :lol:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 déc. 2005, 15:17

de rien, pense à t'inscrire pour pouvoir mettre le sujet en [Résolu]

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute