Page 1 sur 1

concatenation avec select

Posté : 02 nov. 2008, 12:50
par alain78
Probleme:
on recupère 2 champs (nom et prénom) dans une table (membres) et pour l'ensemble des enregistrements.
on concatène ces 2 champs pour obtenir une variable "nom Prénom"


comment passer cette variable dans un Select Form pour permettre une liste déroulante de l'ensemble des enregistrement de la table avec en affichage (Nom Prénom)

L'utilisateur choisi dans la liste un choix (nom prenom) que l'on recherche ensuite dans la table (membres)

Posté : 02 nov. 2008, 13:37
par Ryle
Le plus simple serait de récupérer également l'identifiant de l'enregistrement en plus du nom et du prénom. Ensuite, il suffit simplement de placer les valeurs dans les options de ton <select> :
echo '<option value="' . $row['id'] .'">' . $row['nom'] . ' ' . $row['prenom'] . '</option>';
L'utilisateur verra uniquement les noms et prénoms, et lorsqu'il soumettra le formulaire tu récupèreras la valeur de l'attribut value, dans mon exemple, l'id de l'enregistrement correspondant :)

Posté : 02 nov. 2008, 16:12
par Invité
OK Merci mais d'ou vient la variable row ?

je suppose d'un tableau array ?

voici mon code mais il ne fonctionne pas.

Où est l'erreur ?
$query = mysql_query("SELECT `ref_utilisateur` , `nom` , `prenom` FROM `cms_utilisateurs`") ;
if ($query) {
    echo '<form method="post">';
             echo '<select name="choix">';
                   while ($array = mysql_fetch_assoc($query)) {
		           echo '<option value="' . $row['ref_utilisateur'] .'">' . $row['nom'] . ' ' . $row['prenom'] . '</option>'; 
}
             echo '</select>';
}

Posté : 02 nov. 2008, 16:48
par caroube
Je pense qu'il serait bon que tu lises la documentation et les exemple de mysql_fetch_assoc
http://fr3.php.net/manual/fr/function.m ... -assoc.php

Posté : 02 nov. 2008, 20:56
par Invité
En fait j' ai trouvé.

Voici la solution pour ceux qui souhaite l'utiliser.
$query ="SELECT `ref_utilisateur` , `nom` , `prenom` FROM `utilisateurs` ";
$result=mysql_query($query);
if ($query) {
   echo "<form action={$_SERVER['PHP_SELF']} method='post'>";
   echo '<select name="choix1">';
   while ($row = mysql_fetch_assoc($result)) {
      if ($choix == $array["ref_utilisateur"]) {
         echo '<option value="' . $row['ref_utilisateur'] .'">' . $row['nom'] . ' ' . $row['prenom'] . '<SELECTED></option>'; 
      }else{
         echo '<option value="' . $row['ref_utilisateur'] .'">' . $row['nom'] . ' ' . $row['prenom'] . '</option>'; 
      }
   }
   echo '</select>';
}

Posté : 03 nov. 2008, 09:29
par albat
J'émets un gros doute que la validité de la balise <SELECTED>
et te propose donc la solution suivante.

Remplacer :
if ($choix == $array["ref_utilisateur"]) {
         echo '<option value="' . $row['ref_utilisateur'] .'">' . $row['nom'] . ' ' . $row['prenom'] . '<SELECTED></option>'; 
      }else{
         echo '<option value="' . $row['ref_utilisateur'] .'">' . $row['nom'] . ' ' . $row['prenom'] . '</option>'; 
      } 
par :
echo '<option value="'.$row['ref_utilisateur'].'"'.($choix == $array["ref_utilisateur"] ? 'selected="selected"' : '').'>'.$row['nom'].' '.$row['prenom'].'</option>';