Zone de recherche dans la base mysql

Fermé
aurel851 - 19 mai 2010 à 09:49
 aurel851 - 21 mai 2010 à 09:31
Bonjour,

pour mon site (php/MySQL) je dois développer une zone de recherche, avec un champs "nom", et l'utilisateur devra rentrer au moins un caractère dans le champs, et en cliquant sur un bouton valider, le site renverra une liste des personnes (avec leur attributs nom, prénom...) présente dans une table "info_personne" de ma base de données mysql.

Donc la requête correspondant à ce traitement devrait être celle-ci :

"SELECT * FROM " & pTable & " where Nom like '" & Ch_Nom & "%' order by nom"
Ou pTable= Info_personne
Ou Ch_Nom = chaine de caractère saisie comme critère de recherche

Seulement je développe avec un framework zend donc je ne vois pas trop comment l'insérer en respectant un modèle MVC.

Donc je pensais le faire en "dur" en php mais je ne vois pas trop comment démarrer...

Si quelqu'un à une idée ;-)


14 réponses

V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
19 mai 2010 à 11:56
salut

l'utilisateur entrera un nom complet ou seulement une partie de nom, et ça retourne les noms des personnes commençant par l'entrée ?

sinon en PHP pour concaténer on utilise le "." (point) il me semble...
0
l'utilisateur rentrera les première lettre du nom, puis le site renverra les personnes ayant ces premiere lettre, mais sous forme de tableau avec leur nom mais également leurs autres attributs tel que le prenom, enfin les attributs de la table "info_personne"
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
19 mai 2010 à 14:58
alors ta reqête devrait ressembler à quelque chose comme ça :


$query "select * from $table where nom like \"$champs_nom%\" order by nom" ;
0
d'accord pour la requête, mais maintenant comment je fait pour que ce soit en cliquan sur le bouton submit ou button je sais pas que la requête et comment faire $champs_nom retourne la valeur entrée par le client?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
19 mai 2010 à 17:13
ah ok c'est un problème php et non un problème sql

donc tu as ton formulaire avec ton champs "nom", ton bouton valider sur ta première page.


<FORM METHOD=GET ACTION="traitement.php">
<input type=text name="champs_nom">
<input type=submit name="valider" value="valider">
</FORM>


dans ton traitement.php :

if (isset ($_POST ['champs_nom'])) {
$query = "select * from info_personne where nom like $champs_nom% order by nom ;" ;
//connxion à ta BD
$result = mysql_query ($query) ;
while ($row=mysql_fetch_assoc($result)) {
foreach ($row as $key=>$value) echo "<p>$key => $value</p> ;
}
//déconnexion de ta BD
}
else echo 'le champs nom n\'est pas rempli' ;
voilà normalement ça devrait fonctionner ;)
0
merci bien ;)

malheureusement j'ai du mal faire quelque chose parce qu'il me renvoi toujours :

"le champs nom n'est pas rempli" dans tous les cas...
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
20 mai 2010 à 10:43
oui en effet j'ai oublié une ligne XD désolé ^^"

dans ton traitement.php :

if (isset ($_POST ['champs_nom'])) {
extract ($_POST) ; //extrait tous les index de $_POST, le nom de la variable
// sera le nom de l'index
$query = "select * from info_personne where nom like $champs_nom% order by nom ;" ;
//connxion à ta BD
$result = mysql_query ($query) ;
while ($row=mysql_fetch_assoc($result)) {
foreach ($row as $key=>$value) echo "<p>$key => $value</p> ;
}
//déconnexion de ta BD
}
else echo 'le champs nom n\'est pas rempli' ;


voilà ça devrait marcher encore désolé ;)

bonne continuation
0
arf toujours pas ^^

mon formlaire :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
	<head>
		<title>Annuaire 3H		</title>
		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
		<meta name="description" content=" formulaire" />		
	
		
	</head>
		
	<body>
		<h1> Rechercher une personne  </h1>
<FORM METHOD=GET ACTION="traitement.php">
<input type=text name="champs_nom">
<input type=submit name="valider" value="valider">
</FORM> 
</body>
</html>


et traitement.php :
<?php if (isset ($_POST ['champs_nom'])) {
	

if (isset ($_POST ['champs_nom'])) {
extract ($_POST) ; //extrait tous les index de $_POST, le nom de la variable
// sera le nom de l'index
$query = "select * from info_personne where nom like $champs_nom% order by nom ;" ;
//connxion à ta BD
$cnx=mysql_connect('localhost','root','');
mysql_select_db('annuaire3h',$cnx);
$result = mysql_query ($query) ;
while ($row=mysql_fetch_assoc($result)) {
foreach ($row as $key=>$value) echo $key -> $value ;
}
//déconnexion de ta BD
mysql_close($cnx);
}
else echo 'le champs nom n\'est pas rempli' ; 

?>


au niveau de ton
echo "<p>$key => $value</p>


j'ai remplacer par
echo $key -> $value


sinon j'avais des erreurs, mais bon sinon ça ne marche toujours pas :( mais je fait surement quelque chose de travers
0
et le nom de l'index c'est le nom de ma clé primaire en fait?

si oui je dois le mettre comme ça ?

'id';



merci encore de ton soutien ^^
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
20 mai 2010 à 14:59
il y a de fortes chances pour que l'erreur vienne de cette ligne ^^

<FORM METHOD=GET ACTION="traitement.php">


soit tu mets method=post

soit tu remplaces les "$_POST" par des "$_GET" dans le .php
0
pas mieux malheureusement :(
0
et "champs_nom", il faut pas que je le déclare avant le if?
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
20 mai 2010 à 17:20
copie ça normalement ça devrait marcher

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Annuaire 3H </title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta name="description" content=" formulaire" />


</head>

<body>
<h1> Rechercher une personne </h1>
<FORM METHOD=GET ACTION="traitement.php">
<input type=text name="champs_nom">
<input type=submit name="valider" value="valider">
</FORM>
</body>
</html>



<?php

if (isset ($_POST ['champs_nom'])) {
extract ($_POST) ; //extrait tous les index de $_POST, le nom de la variable
// sera le nom de l'index
$query = 'select * from info_personne where nom like '.$champs_nom.'% order by nom ;' ;
//connxion à ta BD
$cnx=mysql_connect('localhost','root','');
mysql_select_db('annuaire3h',$cnx);
$result = mysql_query ($query) ;
while ($row=mysql_fetch_assoc($result)) {
foreach ($row as $key=>$value) echo $key.' -> '.$value ;
}
//déconnexion de ta BD
mysql_close($cnx);
}
else echo 'le champs nom n\'est pas rempli' ;

?>
0
malheureusement ça me renvoi toujours une page blanche. ou alors quand je l'insère dans mon projet zend comme ça :

rechercherpersonne.phtml :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Annuaire 3H </title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta name="description" content=" formulaire" />


</head>

<body>
<h1> Rechercher une personne </h1>
<FORM METHOD=GET ACTION="rechercherpersonne">
<input type=text name="champs_nom">
<input type=submit name="valider" value="valider">
</FORM>
</body>
</html>


GererpersonnesController :

<?php	
		

require_once 'Zend/Controller/Action.php';
		
class GererPersonnesController extends Zend_Controller_Action {

...

	public function rechercherpersonneAction(){
		
	$champs_nom = $_GET ['champs_nom'];
	
	if (isset ($_GET ['champs_nom'])) {
		extract ($_GET) ; //extrait tous les index de $_POST, le nom de la variable
		// sera le nom de l'index
		$query = 'select * from info_personne where nom like '.$champs_nom.'% order by nom ;' ;
		
		//connxion à ta BD
		$cnx=mysql_connect('localhost','root','');
		mysql_select_db('annuaire3h',$cnx);
		$result = mysql_query ($query) ;
		
		while ($row = mysql_fetch_assoc($result)) {
			foreach ($row as $key=>$value) echo $key.' -> '.$value ;
			}
			
		//déconnexion de ta BD
		mysql_close($cnx);
		}
		
	else echo 'le champs nom n\'est pas rempli' ; 
	}

0