Recherche et affichage BDD via PHP

Résolu/Fermé
ahlam - 19 juin 2010 à 20:42
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 - 21 juin 2010 à 11:47
Bonjour,
J'ai débuté PHP il y a quelques semaines et je tente désormais dans une page d'admin d'effectuer une recherche dans un tableaux et ceci en rentrant le nom d'un utilisateur le résultat sera l'affichage de tout les autre champ de cette table associer a cet utilisateur, et d'avoir ensuite la possibilité de supprimer l'enregistrement de la table.
mais avec le code que j'ai fait l'affichage donne l'ensemble des utilisateurs et toutes les informations associer!! càd la table elle méme ,le filtrage ne s'effectue pas!!
voila donc pour le petit formulaire de recherche :
<?php

echo'<form method="POST" action="PPP.php"> ';
echo 'rechercher:<input type="text" name="de"/><a href="PPP.php"><input type="submit" value="ok"/ ></a>';
echo '</form> '?>

ensuite il y'a la 2eme page qui donne reçois le mot clé entré dans le formulaire et la requéte comme ceci:
<?php
$nom=$_POST['de'];
// on se connecte à MySQL
include 'connexion.php';

// on crée la requête SQL
$requete= "SELECT * FROM TB_enseignent WHERE Nom LIKE '".$nom."%'";
$resultat= mysql_query($requete) or die(mysql_error());
while($ligne=mysql_fetch_array($resultat)){
echo "Nom: ".$ligne['Nom']." prenom: ".$ligne['Prenom']." Adresse: ".$ligne['Adresse']."<br>" ;

}

mysql_close();
?>

c'est quoi le probléme??
mercii



A voir également:

2 réponses

thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
Modifié par thunder413 le 20/06/2010 à 12:37
salut,
LIKE '".$nom."%'"; c'est ca le problème like n'est pas exacte puisque si tu tape "php" il reconnaitra "php4" et "php6" etc donc pour être exacte tu fait
WHERE nom='$nom'
ici soit le nom concorde soit nom
et aussi t'a pas besoin de faire une boucle puisque ici le il s'agit d'un seul résultat donc
$ligne=mysql_fetch_array($resultat);//suffit largement
echo ligne['Nom'];
0
ok!!mais si jveux effectuer le filtrage par apport au nom et au prénom ,en supposant que 2 personne peuvent avoir le même nom!!
sachant aussi qui n me sera présenté qu'une seul variable par le 1er formulaire ($nom)
en bref:
le 1er formulaire ::rechercher:|$nom|
le 2eme:effectuer le filtrage par apport au prénom et au nom en se basant sur $nom::
grand merci pour ton aide !!! jattend ta reponse !!
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
21 juin 2010 à 11:43
d abord je rectifie ce que j'ai dit tentot vaut mieux utiliser LIKE '%'.$nom.'%' que le égale vu que c'est une recherche donc désolé pour ce malentendu ensuite il est vrais que t'a besoin de la boucle donc je me rachetée avec ce ptit bout de code :)
<form method="POST" action="PPP.php">
rechercher:<input type="text" name="de"/><input type="submit" value="ok"/ >
</form>
 
<?php
//récupération des données et mise en minuscule pour éviter le problème de casse
$nom = strtolower($_POST['de']);
//même dans ta requête sql compare en utilisant les minuscule si t'est pas sur que l'insertion s'est fait en minuscule
$requete= "SELECT * FROM TB_enseignent WHERE LOWER(Nom) LIKE '%".$nom."%'";
$resultat= mysql_query($requete) or die(mysql_error());
//préfère toujours l'utilisation de mysql_fetch_assoc ou mysql_fetch_row plutot que mysql_fetch_array
// car celle-ci combine les deux précédente donc elle utilise des ressource inutilement
while($ligne=mysql_fetch_assoc($resultat)){
	  echo "Nom: ".$ligne['Nom']." prenom: ".$ligne['Prenom']." Adresse: ".$ligne['Adresse']."<br>" ;

}

?>

Pour ta deuxième question j'ai pas bien compris ce que tu veut dire par filtre si tu peut expliquer un peu plus ?
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
21 juin 2010 à 11:47
sache aussi que meme avec un seul champs tu avoir le nom et prenom en partant de la logique que le couple nom/prenom sont séparé par un espace tu peu utiliser explode ou split pour les séparer
0