Zone de recherche dans la base mysql
aurel851
-
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 ;-)
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:
- Zone de recherche dans la base mysql
- Alternative zone telechargement - Accueil - Outils
- Base de registre - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Formules mathématiques de base - Télécharger - Études & Formations
- Fréquence tnt recherche manuelle - Forum Téléviseurs
14 réponses
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...
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...
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"
alors ta reqête devrait ressembler à quelque chose comme ça :
$query "select * from $table where nom like \"$champs_nom%\" order by nom" ;
$query "select * from $table where nom like \"$champs_nom%\" order by nom" ;
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?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ;)
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 ;)
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...
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...
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
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
arf toujours pas ^^
mon formlaire :
et traitement.php :
au niveau de ton
j'ai remplacer par
sinon j'avais des erreurs, mais bon sinon ça ne marche toujours pas :( mais je fait surement quelque chose de travers
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
et le nom de l'index c'est le nom de ma clé primaire en fait?
si oui je dois le mettre comme ça ?
merci encore de ton soutien ^^
si oui je dois le mettre comme ça ?
'id';
merci encore de ton soutien ^^
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
<FORM METHOD=GET ACTION="traitement.php">
soit tu mets method=post
soit tu remplaces les "$_POST" par des "$_GET" dans le .php
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' ;
?>
<!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' ;
?>
malheureusement ça me renvoi toujours une page blanche. ou alors quand je l'insère dans mon projet zend comme ça :
rechercherpersonne.phtml :
GererpersonnesController :
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' ; }