Page 1 sur 1

Insérer plusieurs choix d'un select multiple dans mysql

Posté : 26 juin 2006, 18:59
par louetzhang
Bonjour,
J'ai une liste déroulante a choix multiples alimentées des valeurs d'une table de ma base.
//////////////////////

Code : Tout sélectionner

<select name="id_loisirs[]" size="6" multiple>
<?php  
$query="select * from loisirs order by id_loisirs";
$result=mysql_query($query);
while($i=mysql_fetch_array($result))
{
$loisirs=$i[loisirs];
$id_loisirs=$i[id_loisirs];
echo "<option       value=\"".$id_loisirs."\">".$loisirs."</option>\n";
} ?>
</select>
////////////

et du coté traitement je récupère ma valeur id_loisirs et j'insere dans ma base comme suit :
 foreach($id_loisirs as $elem) {
    echo $elem.'<br/>' ;
}

// insertion annonce
	$query="insert into  $table_annonces (id, id_user, id_cat, tel, tel_2, id_loisirs, date, accroche ,text, img,url)";
$query.=" values ('','$id_user', '$id_cat', '$tel', '$tel_2','$elem', '$date','$accroche', '$text', '$img' ,'$url')";
/////////////


mon probleme concerne le champ id_loisirs : quand je valide mon choix multiple, j'ai 1 seul (le dernier) enregistrement inséré dans ma base.
Je me casse la tete depuis des heures sans succes... j'ai essayé d'autres methodes et j'ai aussi eu le cas ou la valeur ARRAY s'est mise dans ma table... Comment insérer tous mes choix sélectionnés de ma liste a choix multiples (id_loisirs) dans ma table, en les séparant par des ; afin de les traiter par la suite ???

merci de votre aide, je desespere...

a+

Posté : 27 juin 2006, 09:37
par guilt92
le probleme vient de la :
foreach($id_loisirs as $elem) { 
    echo $elem.'<br/>' ; 
} 
Ca te semble marcher puisque tu affiches tous les résultats mais tu ne les concatènes pas, tu ne fais qu'un echo...

Il te faudrait par exemple définir une variable $chaine_loisirs qui prendrai la valeur de tous les $elems séparés par un ;...

une syntaxe du type :
$chaine_loisirs="";
foreach($id_loisirs as $elem) { 
    $chaine_loisirs.=$elem.";"; 
} 
Ainsi la chaine se concatenera... ($chaine_loisirs.=$elem est équivalent à $chaine_loisirs=$chaine_loisirs.$elem) Attention, la derniere valeur sera un ; dans notre cas...