Récupérer tous les éléments d'une liste

hul
Petit nouveau ! | 9 Messages

09 juin 2005, 16:56

Bonjour,

Je voudrais pouvoir enregistrer tous les éléments d'une liste déroulante après avoir appuyer sur un bouton type "Submit".

Si quelqu'un peut m'aider ce serait sympa... :D
Hul,
Débutant en PHP :afraid:

Mammouth du PHP | 19672 Messages

09 juin 2005, 17:08

Comment ça "tous" les éléments ? Ceux qui ont été sélectionnés ou tous ceux présents dans la liste ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

hul
Petit nouveau ! | 9 Messages

09 juin 2005, 21:19

En fait, il s'agit d'enregistrer tous les éléments qu'ils soient sélectionnés ou non...

Merci pour vos réponses.
Hul,
Débutant en PHP :afraid:

Mammouth du PHP | 19672 Messages

09 juin 2005, 21:21

l'intérêt m'échappe un peu, mais bon: comment est générée cette liste ? dynamiquement ou non ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

hul
Petit nouveau ! | 9 Messages

10 juin 2005, 09:30

En gros j'ai une liste A et une liste B.

Dans la liste A, je sélectionne des éléments que je mets dans la liste B.

Ce sont les éléments de la liste B que je veux enregistrer.

Maintenant je ne crois pas que le fait de charger une liste dynamiquement ou non change quelquechose.
Hul,
Débutant en PHP :afraid:

Mammouth du PHP | 19672 Messages

10 juin 2005, 09:34

Si ça change, parce que si cette liste est chargée dynamiquement, tu dispose des variables contenant chaque élément de cette liste, tandis que si tu a cette liste en dur dans ton code html, ça pose un autre genre de problème et la solution est plus probablement en JavaScript.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

hul
Petit nouveau ! | 9 Messages

10 juin 2005, 09:56

La liste est chargée dynamiquement.
Hul,
Débutant en PHP :afraid:

Mammouth du PHP | 19672 Messages

10 juin 2005, 09:58

Donc les valeurs sont dans une variable tableau ou une liste de variable: mais si tu n,en racontes pas davantage, ça va être particulièrement compliqué de t'expliquer comment réaliser ta récupération. Quoi qu'il en soit, les valeurs sont là, donc c'est faisable dès le chargement de la page.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

hul
Petit nouveau ! | 9 Messages

10 juin 2005, 10:01

Autant pour moi.

Je remplis la liste A avec une boucle sur une base Mysql, et je remplis la liste B grâce à un bouton prenant des éléments de la liste A pour les mettre dans la liste B.
Hul,
Débutant en PHP :afraid:

Mammouth du PHP | 19672 Messages

10 juin 2005, 10:05

Dis, tu pourrais pas être un brin plus précis et clair: selon ce que tu m'expliques, tu fais simplement une copie de ta liste A pour créer la liste B.... je saisis pas l'intérêt et à priori il manque quelque chose quelque part.

Donne un exemple avec des détails ou mieux, mets nous ton code.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

hul
Petit nouveau ! | 9 Messages

10 juin 2005, 10:28

Je ne peux pas être plus précis. Si tu ne vois pas l'intérêt de ça, mon responsable (encore plus novice que moi... :roll: ) lui le voit.

Voici mon code.
<? php
// Script pour basculer les éléments de la liste 1 vers la liste 2
echo "<SCRIPT LANGUAGE=\"JavaScript\">
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(\"Aucune élément sélectionné\");}}
</SCRIPT>";

// Sélection des domaines fonctionnels

// Liste 1 éléments non sélectionnés
$requete = "Select codsdf, libdfo, libsdf from smi_sd2 where codsmi =".$codsmi;
$resultat = mysql_query( $requete, $base_id)
             or die( "Exécution requête impossible.");

$codhtml= "<TABLE><TR>
	<TD align=\"center\"><B><FONT size=\"2\">Domaines fonctionnels proposés</FONT></B><BR>
	<SELECT align=top name=\"lst_df1\" size=10  style=\"width:300px\">";
while ( $row = mysql_fetch_array( $resultat)) {
    $l_codsdf = $row["codsdf"];
    $l_libsdf = $row["libdfo"].": ".$row["libsdf"];
    $codhtml.= "<OPTION VALUE='$l_codsdf' >$l_libsdf</OPTION>";}
$codhtml.= "</SELECT></TD>";
print $codhtml;

echo "<TD align=\"center\">
	<INPUT type=\"button\" value=\"Ajouter >>>\" onClick=\"Deplacer(this.form.lst_df1,this.form.lst_df2)\">
	<BR><BR>
	<INPUT type=\"button\" value=\"<<< Enlever\" onClick=\"Deplacer(this.form.lst_df2,this.form.lst_df1)\">
	</TD>";
$codhtml= " 
	<TD align=\"center\"><B><FONT size=\"2\">Domaines fonctionnels retenus</FONT></B><BR>
	<SELECT align=top name=\"lst_df2\" size=10  style=\"width:300px\">";

// Liste 2 éléments sélectionnés
$requete = "Select smi_sdf.codsdf, libdfo, libsdf from smi_sdf,tab_sdf,tab_dfo ";
$requete.= " where codsmi=".$codsmi;
$requete.= " and smi_sdf.codsdf=tab_sdf.codsdf and tab_dfo.coddfo=tab_sdf.coddfo";
$resultat = mysql_query( $requete, $base_id)
             or die( "Exécution requête impossible.");
while ( $row = mysql_fetch_array( $resultat)) {
    $l_codsdf = $row["codsdf"];
    $l_libsdf = $row["libdfo"].": ".$row["libsdf"];
    $codhtml.= "<OPTION VALUE='$l_codsdf' >$l_libsdf</OPTION>";}
$codhtml.= "</SELECT></TD></TR></TABLE>";
print $codhtml;

mysql_close($base_id);

?>

<p class=MsoNormal><INPUT TYPE="SUBMIT" VALUE="OK" NAME="bou_detsmi"><span
style='mso-tab-count:1'>           </span><INPUT TYPE="SUBMIT" VALUE="Annuler" NAME="bou_detsmi"><span
style="mso-spacerun: yes"> </span></p>
en Cliquant sur Ok Je veux pouvoir récupérer les éléments de la 2ème liste et les enregistrer dans ma base.
Hul,
Débutant en PHP :afraid:

Mammouth du PHP | 19672 Messages

10 juin 2005, 10:36

Ben voilà, ça commence à devenir plus facile:

Dans la premier boucle while de création de ta liste d'option, tu as toutes les valeurs que tu veux: il te suffit d'ajouter une ligne pour mettre en plus ce valeurs dans une variable de type tableau (array) et récupérer ensuite ce tableau pour faire ta mise à jour : est-ce que tu saisis le principe ou pas trop ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

hul
Petit nouveau ! | 9 Messages

10 juin 2005, 10:43

Pas du tout, j'comprends pas.

Je débute vraiment :cry: .
Hul,
Débutant en PHP :afraid:

Eléphant du PHP | 52 Messages

10 juin 2005, 10:47

hello,

ton soucis est surtout javascript non ? :wink:

Bon, alors moi je mettrait les selects en multiple="multiple", puis tu fais un peu évoluer ta fonction déplacer pour déplacer tous les options.selected=true.

puis onSubmit de ton form, tu dois passer tous les élément de ton select de destination à selected :
for (var i=0; i<(elem.options.length); i++)
elem.options.selected = true;

et du coup ta page d'action recoit un $_POST ou $_GET[lst_df2] qui est un tableau qui contient toutes tes values...

a+

hul
Petit nouveau ! | 9 Messages

10 juin 2005, 10:49

Ok je vais essayer ça.

Pourvu que ça marche [-o<

Merci.
Hul,
Débutant en PHP :afraid: