PHP/MySql : afficher les valeurs existantes d'un champ dans une liste multiple p

lafpat Messages postés 2 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 8 octobre 2010 - 12 sept. 2010 à 12:04
lafpat Messages postés 2 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 8 octobre 2010 - 8 oct. 2010 à 18:04
Bonjour !
Après avoir fouillé dans les forums,je suis toujours dans l'impasse quant à mon pb:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<?php /*
2 tables MySql: utilisateurs(id_utilisateur,nom,prenom,etc...) et Rreunion(id_Rreunion,date_debut,date_fin,id_utilisateurs)
Modification d'une liste multiple basée sur un existant(le champ id_utilisateurs de table Rreunion,valeurs: 14,26,5,37,42,23 (les identifiants de la table utilisateurs)
*/?>

<?php
// un lien "modifier" sur un agenda m'amène à cette page
if ( isset($_GET['idRreserv']))
{
$sql="select * from Rreunion where id_Rreunion=".$_GET['idRreserv'];
$query = mysql_query($sql) or die ('Erreur : '.mysql_error() );
$datareserv = mysql_fetch_array($query);
}
?>
<?php
// ...le début du code
?>
<td colspan="3" align="left">
<select name="liste1" multiple size="15" onChange="wSelectMultiple.value=selectMultiple('liste1');">
<option value="0">---------</option>
<?php
$ids = explode(",",$datareserv['id_utilisateurs']);

$sql = "SELECT id_utilisateur,nom,prenom FROM utilisateurs ORDER BY nom";
$query=mysql_query($sql);

while ($data = mysql_fetch_array($query))
{
foreach($ids as $id_utilisateur) // tous les existants sont sélectionnés mais la liste comprend autant de doublons que le nb total d'existants
{
if (($data['id_utilisateur'])==$id_utilisateur)
{
//foreach($ids as $idU) // aucun existant n'est sélectionné dans la liste
//{
echo '<option value ="'.$data['id_utilisateur'].'" selected />'.$data['nom'].' - '.$data['prenom'].'</option />';
//}
}else{
echo '<option value ="'.$data['id_utilisateur'].'" />'.$data['nom'].' - '.$data['prenom'].'</option />';
}
}

}
?>
</select>
</td>
<td>" /></td>

<?php // la suite vers une rq UPDATE de tous les champs ?>
xxxxxxxxxxx
Mes constats sont au niveau des foreach,mais ne répondent pas à ma quête.
Si je mets un GROUP BY pour éviter les doublons,ma liste est vide.
Merci de votre aide !!
A voir également:

1 réponse

lafpat Messages postés 2 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 8 octobre 2010
8 oct. 2010 à 18:04
J'ai trouvé par moi-même une meilleure approche de ma liste multiple :

<select name="liste1" multiple size="15" onChange="wSelectMultiple.value=selectMultiple('liste1');">
<option value="0">---------</option>
<?php
$sql = "SELECT id_utilisateur,nom,prenom FROM utilisateurs ORDER BY nom";
$query=mysql_query($sql);

while ($data = mysql_fetch_array($query)) {
foreach($ids as $id_utilisateur) {
if ($data['id_utilisateur'] == $id_utilisateur) { echo '<option value ="'.$id_utilisateur.'" selected="selected"/>'.$data['nom'].' - '.$data['prenom'].'</option />'; }
}
echo '<option value ="'.$data['id_utilisateur'].'" />'.$data['nom'].' - '.$data['prenom'].'</option />'; }
?>
</select>

[b]Ma liste est complète et unique,les utilisateurs concernés sont sélectionnés,mais ils apparaissent en double.
Je finirais par trouver la réponse,mais un coup de main aurait été sympa !/b
0
Rejoignez-nous