Page 1 sur 1

récupérer données d'une liste multi

Posté : 17 mai 2006, 13:48
par Lopy
Bonjour à tous,
J'ai utilisé un script afin de pouvoir ajouter ou enlever des données dans une liste que l'on importe donc à partir d'une autre liste un peu comme ça :

liste1____________liste2
______ajouter->
______<- enlever

le problème c'est que je ne sais pas comment récupérer les données de la liste2. Faut t'il utiliser une requête sql pour le déduire à partir des données de la liste1? si oui comment récupérer les données de la liste1?

Au cas où je vous met le code de la fonction javascript :

Code : Tout sélectionner

<script> function Deplacer(l1,l2) { if (l1.options.selectedIndex>=0) { o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value); l2.options[l2.options.length]=o; l1.options[l1.options.selectedIndex]=null; }else{ alert("Aucun programme sélectionné"); } } </script>
et voilà le code pour les listes :
<label style="position: absolute;top: 475px; left: 100px;">Programmes: </label><br />

			<SELECT align=top name="liste1" size=6  style="width:120px;position: absolute;top: 500px; left: 110px;">

			<?php

				$requete="select nom_prog from programme";

				$connexion=connexion();

				$resu=execreq($requete,$connexion);

				$nblignes=mysql_num_rows($resu);

				for($i=0;$i<$nblignes;$i++){

					$prog=mysql_fetch_row($resu);

					echo "<option name=\"prog[]\" value=\"".$prog[0]."\">".$prog[0]."</option>";

				}

			?>

	</SELECT>

	<INPUT type="button" value="Ajouter ->" style="position: absolute; left: 270px;" onClick="Deplacer(this.form.liste1,this.form.liste2)"><BR><BR>

	<INPUT type="button" value="<- Enlever" style="position: absolute; left: 270px;" onClick="Deplacer(this.form.liste2,this.form.liste1)">

	<label style="position: absolute;top: 475px; left: 380px;">Ce site utilise: </label><br />

	<SELECT align="top" name="liste2" size="6" style="width:120px;position: absolute;top: 500px; left: 390px;">

		<OPTION value="10">----------------------</OPTION>

	</SELECT>

		<SCRIPT language="javascript">

			document.forms['ajout_site'].liste2.options.length=0;

		</SCRIPT>
Merci d'avance !

Posté : 17 mai 2006, 14:16
par Ryle
Le problème de ce type de fonctionnement, c'est que lorsque tu envois le formulaire, il ne considère pas tes listes comme étant dépendantes l'une de l'autre, mais comme deux éléments d'un formulaire. Il ne transmet alors que les options qui sont sélectionnées dans chacune des deux listes.

Il te faut donc, au moment où tu envoi le formulaire, un p'tit bout de javascript qui va parcourir tous les éléments de la liste2 et les sélectionner un par un (liste2.options.selected = true). Tu pourras ainsi récuperer la variable $_POST['liste2'] (ou $_GET) contenant un tableau avec chaque id sélectionné.

Sinon, dès le moment où tu parcours la liste2 en javascript, tu peux aussi bien récupérer les différents identifiants et les passer en les concaténant via une autre variable, ou autre... :)

Posté : 18 mai 2006, 08:27
par Lopy
Merci Ryle !