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

Eléphanteau du PHP | 18 Messages

17 mai 2006, 13:48

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 !

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

17 mai 2006, 14:16

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... :)

Eléphanteau du PHP | 18 Messages

18 mai 2006, 08:27

Merci Ryle !