Sélectionner les items d'un select multiple depuis un array

Gecko62 -  
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je bute sur un petit problème :

J'ai des données contenue dans un array (provenant d'une base de données)
J'ai un champ SELECT multiple avec des données provenant d'une table

J'aimerais pouvoir sélectionner les items correspondants aux données contenue dans l'array

cela j'y arrive, mais car il y a un mais,
si les données dans mon array sont au nombre de 2 tous mes items dans le SELECT sont affichés deux fois,
si les données dans mon array sont au nombre de 3 tous mes items dans le SELECT sont affichés trois fois,
...
si les données dans mon array sont au nombre de 5 tous mes items dans le SELECT sont affichés cinq fois fois,

or je ne trouve pas comment éviter cela quelqu'un aurait-il la solution à apporter à mon code !!!



$auteurs = explode("/", $row_Livre[4]);
echo "<option value='-1'>Sélectionne l'auteur</option>";
while ($row_Auteur = mysql_fetch_row($verif_Auteur)) {
foreach ($auteurs as $auteur)
{
if ($row_Auteur[0] == $auteur) { $sel2 = 'selected'; } else { $sel2 = ''; }
echo "<option value='".$row_Auteur[0]."' ".$sel2.">".$row_Auteur[1]."</option>";
}
}



D'avance un grand merci pour votre aide

Bien cordialement

Gecko62
A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Ton erreur vient de l'imbrication des deux boucles. Tu ne dois avoir qu'une seule boucle pour parcourir ta liste d'auteur, et pour chaque auteur vérifier si celui-ci existe dans la liste des auteurs sélectionnés (avec la fonction in_array par exemple).

Voici une solution possible (avec des données de tests puisque je n'ai pas accès à ta bdd) :
<?php
// les auteurs de ma bdd
$auteurs = array('Auteur1', 'Auteur2', 'Auteur3', 'Auteur4');

// les auteurs selectionnées dans le formulaire
$auteursSelect = array('Auteur2', 'Auteur3');
?>
<select name="" multiple>
 <option value="-1">Choisir l'auteur</option>
 <?php foreach ($auteurs as $auteur) : ?>
 <option value="<?php echo $auteur; ?>"<?php echo in_array($auteur, $auteursSelect) ? ' selected' : ''; ?>><?php echo $auteur; ?></option>
 <?php endforeach; ?>
</select>


Bonne journée
0