concatenation avec select

alain78
Invité n'ayant pas de compte PHPfrance

02 nov. 2008, 12:50

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)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 nov. 2008, 13:37

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

02 nov. 2008, 16:12

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>';
}

Eléphant du PHP | 422 Messages

02 nov. 2008, 16:48

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

Invité
Invité n'ayant pas de compte PHPfrance

02 nov. 2008, 20:56

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>';
}

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

03 nov. 2008, 09:29

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>';