Outil de recherche

Eléphant du PHP | 65 Messages

23 déc. 2005, 15:36

Voilà j'essaie de créer un outil pour rechercher dans ma base de donnée. J'ai quatre champs de recherche, un par client, un par province/état un par compagnie et un autre par personne.

Si je fais une premiere recherche par client, ça fonctionne, mais quand je veux en faire une avec un autre champs, ça bloque.

Code html des formulaires

Code : Tout sélectionner

Recherche par client :<br /> <form name="recherche" id="recherche" action="modifclient.php" method="post"> <input type="text" name="recherche" /> <input type="submit" name="Envoyer" /> </form> <br /><br /> Recherche par état/province :<br /> <form name="cher-province" id="cher-province" action="modifclient.php" method="post"> <input type="text" name="cher-province" /> <input type="submit" name="Envoyer" /> </form> <br /><br /> Recherche par compagnie :<br /> <form name="cher-cie" id="cher-cie" action="modifclient.php" method="post"> <input type="text" name="cher-cie" /> <input type="submit" name="Envoyer" /> </form> <br /><br /> Recherche par personne :<br /> <form name="cher-pers" id="cher-pers" action="modifclient.php" method="post"> <input type="text" name="cher-pers" /> <input type="submit" name="Envoyer" /> </form>
Code php
if(extract($_POST))
	{
		//Si le champ recherche est poster
		if($cherche = $_POST['recherche'])
		{
			//Requete
			$sql = "SELECT * FROM clients WHERE user = '".$cherche."'";
			$req = mysql_query($sql);
			
			echo "<br /><br /><br /><br />";
		
			//Tant qu'il y a des donnés retourné par la recherche, il les affiche
			while($data = mysql_fetch_array($req))
			{
				//Affiche les données
				$numclient = $data["no"];
				echo "<a href=\"modifclient2.php?no=".$numclient."\">$data[user]</a><br />" ;
			}
		}
		//Si le champ cher-province est poster
		else if($cherche2 = $_POST['cher-province'])
		{
			//Requete
			$sql = "SELECT * FROM clients WHERE province = '".$cherche2."'";
			$req = mysql_query($sql);
			
			echo "<br /><br /><br /><br />";
		
			//Tant qu'il y a des donnés retourné par la recherche, il les affiche
			while($data = mysql_fetch_array($req))
			{
				//Affiche les données
				$numclient = $data["no"];
				echo "<a href=\"modifclient2.php?no=".$numclient."\">$data[user]</a><br />" ;
			}
		}
		//Si le champ cher-cie est poster
		else if($cherche3 = $_POST['cher-cie'])
		{
			//Requete
			$sql = "SELECT * FROM clients WHERE cie = '".$cherche3."'";
			$req = mysql_query($sql);
			
			echo "<br /><br /><br /><br />";
			
			//Tant qu'il y a des donnés retourné par la recherche, il les affiche
			while($data = mysql_fetch_array($req))
			{
				//Affiche les données
				$numclient = $data["no"];
				echo "<a href=\"modifclient2.php?no=".$numclient."\">$data[user]</a><br />" ;
			}
		}
		//Si le champ cher-pers est poster
		else if($cherche4 = $_POST['cher-pers'])
		{
			//Requete
			$sql = "SELECT * FROM clients WHERE personne = '".$cherche4."'";
			$req = mysql_query($sql);
			
			echo "<br /><br /><br /><br />";
		
			//Tant qu'il y a des donnés retourné par la recherche, il les affiche
			while($data = mysql_fetch_array($req))
			{
				//Affiche les données
				$numclient = $data["no"];
				echo "<a href=\"modifclient2.php?no=".$numclient."\">$data[user]</a><br />" ;
			}
		}
    }
Et les codes d'erreur :

Notice: Undefined index: recherche in /Applications/MAMP/bin/mamp/Sites/admin/modifclient.php on line 66

Notice: Undefined index: cher-province in /Applications/MAMP/bin/mamp/Sites/admin/modifclient.php on line 79

Notice: Undefined index: cher-cie in /Applications/MAMP/bin/mamp/Sites/admin/modifclient.php on line 92

Donc a priorie c'est comme s'il cherchait quand même dans le if, je sais pas trop, si quelqu'un a une idée
Mieux vaut avoir un humour douteux que de ne pas en avoir du tout!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 déc. 2005, 15:43

L'opérateur d'égalité dans un if c'est ==, pas =

De plus, il faudrait que tu testes l'existence des variables plutôt de les comparer à quelquechose
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 65 Messages

23 déc. 2005, 15:49

Je déclare mes variables dans le if, même si le les met comme ça j'ai le même probleme
if($_POST['recherche'])
		{
            $cherche = $_POST['recherche'];
			//Requete
			$sql = "SELECT * FROM clients WHERE user = '".$cherche."'";
			$req = mysql_query($sql);
			
			echo "<br /><br /><br /><br />";
		
			//Tant qu'il y a des donnés retourné par la recherche, il les affiche
			while($data = mysql_fetch_array($req))
			{
				//Affiche les données
				$numclient = $data["no"];
				echo "<a href=\"modifclient2.php?no=".$numclient."\">$data[user]</a><br />" ;
			}
		}
Mieux vaut avoir un humour douteux que de ne pas en avoir du tout!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 déc. 2005, 15:53

remplace ça
if($_POST['recherche']) 
par ça
if(isset($_POST['recherche']))
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 déc. 2005, 16:21

Vu qu'un RESOLU est apparu, je pense que c'est bon mais si tu avais la bonté de nous le confirmer, ça serait un plus ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 65 Messages

23 déc. 2005, 17:32

Oui c'est bon, une erreur de débutant :oops:

Y moyen de faire des recherches aproximatives?
Mieux vaut avoir un humour douteux que de ne pas en avoir du tout!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 déc. 2005, 19:38

Y moyen de faire des recherches aproximatives?
regarde du coté de l'attribut LIKE de mysql ou meme sur ce forum avec une petite recherche :wink:

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