Menu déroulant avec récupération des données via mysql --> PB

Résolu
cougar5 Messages postés 2 Date d'inscription lundi 25 juillet 2005 Statut Membre Dernière intervention 26 juillet 2005 - 25 juil. 2005 à 19:47
cougar5 Messages postés 2 Date d'inscription lundi 25 juillet 2005 Statut Membre Dernière intervention 26 juillet 2005 - 26 juil. 2005 à 10:00
Bonjour à tous,
Je suis un débutant en code php. (et nouveau également sur ce site)
Il m'a fallu la journée pour créer 2 pages PHP. (Merci internet et les forums)

Ma première page est un menu déroulant qui une fois déroulée laisse apparaitre des informations contenues dans une base de donnée mysql.
Il s'agit d'une liste de nom.
Je choisi un nom puis valide.

La seconde page récupère la valeur de 'nom' dans l'url puis m'affiche après une requete mysql , le prénom, l'adresse, le téléphone de la personne souhaitée.

Voici mon problème :
Si j'ai plusieurs noms identiques, ma seconde page récupère la première ligne quelle rencontre !!

Ma table contient une clé primaire qui s'auto incrémente à chaque ligne, du coup pour chaque nom, j'ai qu'un seul numéro (id) qui lui ait attribué....

Il faudrait que j'envoie à ma seconde page en paramètre, mais je ne sais pas faire.....

VOICI MON CODE :

Page menu.php

<form action= "verif.php" method="get">

<?


//J'appelle mon include
include("_conn.php"); //ce fichier contient les informations de connexion à la base.


//Connexion à la base de donnée
mysql_connect($dbhost,$dblogin,$dbpassword);mysql_selectdb($dbname);



$query = "SELECT nom FROM Personnel ORDER BY nom";
$result = mysql_query($query);



if ($num=mysql_num_rows($result) >0)
{
echo "
<select name='nom'>
<OPTION value='defaut'>NOMS : </OPTION>
";



while($row = mysql_fetch_array($result))
{
echo "<option value='$row[0]'> $row[0] </OPTION>";
}
echo "</SELECT>";


}


echo "

";
echo "\n";


?>

</form>

Et voici ma seconde page : Je l'ai déja modifier pour qu'elle me récupère bien les bonnes coordonnées de la personne.

verif.php

<?php


include("_conn.php");


$nom =$_GET['nom'];
$id= $_GET['id'];



mysql_connect($dbhost,$dblogin,$dbpassword);mysql_selectdb($dbname);



$result =mysql_query("SELECT * FROM Personnel WHERE nom='$nom' and id='$id' ");
if ($row=mysql_fetch_array($result)) {


echo "Nom : " . $row["nom"] . "
";
echo "Prénom : " . $row["prenom"] . "
";
echo "Adresse Principale: " . $row["adresse1"] . " " . $row["cp"] . " " .$row["ville"] . "
";
echo "Téléphone : " . $row["tel"] . "
";

} else {
echo "Désolé, mais cet utilisateur est inconnu
";
}


mysql_close();


?>



En espérant que vous aurez compris et que vous pourrez m'aider.
Je vous remercie.

Cougar5

Voila mon problème :

2 réponses

cs_Zart Messages postés 285 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 27 juin 2006 1
25 juil. 2005 à 20:30
Je vais te proposer un solution simple et pragmatique...

La clé primaire de table est bien un id qui s'auto incrémente, donc
avec cet id tu ne peux avoir qu'une seule personne de ton "personnel"

Donc il suffit de lister dans la liste précédente à la fois les noms et prénoms des personnes comme ceci :



echo "<option value='$row[id]'> $row[nom] $row[prenom] </OPTION>";


Du coup dans ton menu déroulant plus moyen de se tromper. Au
finish quand tu récupères dans verif.php. TU te chopse l'id unique qui
te permet d'avoir les coordonnées des personnes que tu veux...



Ensuite ce que tu peux faire c'est encore mieux trier ton personnel en modifiant la requete comme ceci SELECT nom FROM Personnel ORDER BY nom ASC, prenom ASC



Comme ça si tu as deux personnes qui ont le même nom mais pas le même
prénom tu ne peux plus te tromper en plus se seras super formatter
nickel...
3
cougar5 Messages postés 2 Date d'inscription lundi 25 juillet 2005 Statut Membre Dernière intervention 26 juillet 2005
26 juil. 2005 à 10:00
Bonjour,

Un seul Mot : MERCI
Tout fonctionne nickel ... Comme koi, de temps en temps, il vaut mieux revoir un peu ca copie, plutot que de réfléchir comme un fou.
En effet, c beaucoup plus simple !!

Merci encore.

Cougar5
3
Rejoignez-nous