Zone de recherche dans la base mysql

aurel851 -  
 aurel851 -
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 ;-)


A voir également:

14 réponses

V4lkYr Messages postés 38 Date d'inscription   Statut Membre Dernière intervention  
 
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
aurel851
 
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   Statut Membre Dernière intervention  
 
alors ta reqête devrait ressembler à quelque chose comme ça :


$query "select * from $table where nom like \"$champs_nom%\" order by nom" ;
0
aurel851
 
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   Statut Membre Dernière intervention  
 
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
aurel851
 
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   Statut Membre Dernière intervention  
 
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
aurel851
 
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
aurel851
 
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   Statut Membre Dernière intervention  
 
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
aurel851
 
pas mieux malheureusement :(
0
aurel851
 
et "champs_nom", il faut pas que je le déclare avant le if?
0
V4lkYr Messages postés 38 Date d'inscription   Statut Membre Dernière intervention  
 
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
aurel851
 
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