Recupération d'élément d'une liste

Résolu
val_lala Messages postés 50 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 18 décembre 2008 - 27 août 2007 à 11:01
mich444 Messages postés 1 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 19 novembre 2008 - 19 nov. 2008 à 10:05
Bonjour,
je commence tout juste le javaScript! et la je bloque...
J'ai fait deux listes et on peut selectionner un element de la premiere liste et il va dans la deuxieme.
(je suis désolée je ne sais pas comment s'appelle cet objet!)
le déplacement fonctionne trés bien seulement je souhaiterai récuperer les élement de la deuxieme liste pour les traiter en PHP...
et je ne voit pas du tout comment faire!!... j'ai essayer avec un $_REQUEST mais ca ne marche pas!

voici une partie de mon html :
    </SELECT>
    </TD>
    <TD align= "center">
    >>" onClick="Deplacer(this.form.liste1,this.form.liste2)">
   

   
    </TD>
    <TD align="center"> accessoires liés

    <SELECT align =top name="liste2" size=6 style="width:120px">
        <OPTION value="10">----------------------</OPTION>
    </SELECT>
    </TD>
    </TR></TABLE>
    <SCRIPT language="javascript">
        document.formulaire.liste2.options.length=0;
    </SCRIPT>

le tout est dans un formulaire...

et voici les fonction 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 activité sélectionnée");
        }
    }

je me demande meme si je ne devrais pas ajouter qulequechose dans le fonction en faite...
j'espere que quelq'un pourra m'aider!
merci d'avance!
val

13 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 août 2007 à 14:55
tu n'as pas fait les modifs ?

this.form['liste2[]'],this.form.liste1)" />
    </TD>
    <TD align= "center"> accessoires liés

    <SELECT name ="liste2[]" multiple size=6 style="width:120px">





    et il faut sélectionner toutes les options avant la soumission !
        puisque seules celles sélectionnées sont transmises.
        <form... onsubmit="mettout(this['liste2[]']);"...

        function mettout(sel)
        {    for ( var n=0;n<sel.options.length;n++ )
              {    sel.options[n].selected="selected";    }
        }
  

    je n'ai rien testé, peut-être des erreurs ( de syntaxe )

<hr />



Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
1
val_lala Messages postés 50 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 18 décembre 2008 1
28 août 2007 à 17:26
cool! ca marche! j'étais fatiguée hier!! MERCI!!
je met mon code, pour les autres débutants comme moi, si ca peut les aider!

premiere page  :
       
<form method="POST" enctype="multipart/form-data" action="xxx_suite2.php" "mettout(this['liste2[]']);">
    <SELECT align=top name="liste1" size=6  style="width:180px">   
        <?php $res = mysql_query("SELECT nom_acc FROM accessoire");
        while($row = mysql_fetch_assoc($res))
                {
        echo "<option value='".$row["nom_acc"]."'>".$row["nom_acc"]."</option>";
                }?>   
    </SELECT>
        >>" onClick="Deplacer(this.form.liste1,this.form['liste2[]'])">
       
        <form  name="frm[]" onsubmit="tout();"  method="post"  >
        <select size=6 name="liste2[]" multiple style="width:180px">
        </select>
   
        </form>
</form>

deuxieme page :
if(isset($_POST['liste2']) && !empty($_POST['liste2'])){
    $Col1_Array = $_POST['liste2'];
    //print_r($Col1_Array);
        foreach($Col1_Array as $selectValue){
        //affichage des valeurs sélectionnées
                echo $selectValue."
";
    }
}

le 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 activité sélectionnée");
        }
    }
1
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 août 2007 à 11:30
    bonjour,

>je souhaiterai récuperer les élement de la deuxieme liste pour les traiter en PHP...
    faut les envoyer au php, ces éléments.

    avec un formulaire, method post ou get, action= donne le script php qui recevra
       dans ce formulaire, le 2ème select, multiple, toutes les options selected.
       donne lui un name du style name="name_select[]" avec les crochets,
       php recevra un array.

    avec ajax, rien ne change dans le  raisonnement.



>>$_REQUEST mais ca ne marche pas
    ben non. tu es coté client. pas de php à ce moment là.




<hr />




Cordialement                Bul         [mon Site]     [M'écrire]<hr />
En général, c'est absurde de généraliser.
0
val_lala Messages postés 50 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 18 décembre 2008 1
27 août 2007 à 11:40
olala!
je ne comprend rien à ton message!
mon formulaire : <form method="POST" enctype="multipart/form-data" action="xxxxxx.suite2.php">
c'est le nom de mon select que tu penses que je dois changer? name="name_select[]?
??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 août 2007 à 12:32
que ne comprends-tu pas ?

   >> faut les envoyer au php, ces éléments.
       c'est la seule manière de communiquer entre javascript et php.
       il faut rappeler une page, un script php,... sur le serveur
       et pour faire : 1° soumettre un formulaire 2° changer l'url  3° ajax.

   >>


<form method="POST" enctype="multipart/form-data" action="xxxxxx.suite2.php">

         si le select est dans ce formulaire, les "value" des options sélectionnées,
               seront envoyées à xxxxxx.suite2.php

         pour que ce soit plus simple à traiter coté php, nommer le select
                  <select ... name="name_select[]"... >



         en php, $_POST["name_select"] est un  array, qui contient
            les value transmises ( tester avec print_r par exemple )














<hr />
                  Cordialement             Bul       [

mon Site

]    [

M'écrire

]
<hr />
                                                                                    En général, c'est absurde de généraliser.
0
val_lala Messages postés 50 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 18 décembre 2008 1
27 août 2007 à 14:33
Ok, cette fois je comprend ce que tu dis, ca marche comme un formulaire classique en faite!
merci pour ta patience!
Mais quand je change le nom comme tu dis ca ne marche plus, je sais pas si il aime les crochets!?
Car si je suis bien ce que tu dis si je met

$_POST["liste2"] je devrais au moins avoir un array?




Parce que je ne trouve rien du to



ut!! (pas de valeur, pas d'erreur)
alors est-ce que je suis un vrai boulet parce qu'en suivant ce que tu dis je devrai faire marcher ce bout de code ou bien est ce que j'ai d'autres erreurs ailleurs dans ma démarche????











mon formulaire en entier : (j'ai des copier/coller un peu partout, c'est pas jolie, mais j'enleverai le superflu lorsque ca marchera)
<form method="POST" enctype="multipart/form-data" action="xx.suite2.php">
        Accessoires

    <SELECT align=top name="liste1" size=6  style="width:120px">   
                <?php
                mysql_connect("localhost","root","");
                mysql_select_db("uml");
                $res = mysql_query("SELECT nom_acc FROM accessoire");
                while($row = mysql_fetch_assoc($res))
                    {
                echo "<option value='".$row["nom_acc"]."'>".$row["nom_acc"]."</option>";
                    }
                   ?>
    </SELECT>
   ,
        >>" onClick="Deplacer(this.form.liste1,this.form.liste2)">
   

   
   ,
    accessoires liés

   
    <SELECT align=top name="liste2" size=6 style="width:120px">
            <OPTION value="10">----------------------</OPTION>
    </SELECT>
   ,
   

    <SCRIPT language="javascript">
    </SCRIPT>

</FORM>
0
val_lala Messages postés 50 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 18 décembre 2008 1
27 août 2007 à 14:57
Bon j'ai reussi à affiner le probleme...
enfaite je recupere bien la valeur d'un des produits de la deuxieme liste mais seulement lorsqu'il est sélectionné!!
c'est donc un probleme de javascript que j'ai, non?
0
val_lala Messages postés 50 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 18 décembre 2008 1
27 août 2007 à 15:35
mm, j'ai le doigt sur le probleme!
on ne peut pas mettre de crochets en javaScript!!
Pourtant j'en ai besoin pour faire un select multiple!!
Si quelqu'un a une solution! car même avec les questions similaires postées sur le forum, je n'ai pas reussis à trouver une solution!!
merci d'avance!
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 août 2007 à 15:59
>>on ne peut pas mettre de crochets en javaScript!!
    mais si, mais si !    je t'ai même dis comment gérer coté javascript !
    un autre exemple ici, dans les commentaires, vers la fin                  


<hr />




Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 août 2007 à 16:02
<?php
if (isset($_POST["sel"])) print_r ($_POST["sel"]);
?>
<script type="text/javascript">
function tout()
{   for ( var n=0;n<document.frm["sel[]"].length;n++ )
    { document.frm["sel[]"].options[n].selected="selected"; }
}
</script>
<form  name="frm"
            onsubmit="tout();"
            method="post">
<select name="sel[]"
             multiple>
<option value="hein">un
<option value="de">deux
<option value="trou à">trois
</select>

</form>






<hr />




Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 août 2007 à 16:19
une dernière remarque ?
sans connaître cette syntaxe un peu bizarre ( document.frm["sel[]"] ), on
            pouvait mettre un ID et coté javascript utiliser document.getElementById.
<hr />



Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
0
val_lala Messages postés 50 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 18 décembre 2008 1
28 août 2007 à 08:11
j'ai du me pencher sur autre chose, j'espere remettre le nez dedans tout à l'heure...
MERCI pout toutes ces infos, j'espere faire une compile de tout ca pour que ca fonctionne!!
val
0
mich444 Messages postés 1 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 19 novembre 2008
19 nov. 2008 à 10:05
Hello !!
Je relance ce sujet apres un long moment....

Je suis a la recherche d'une solution pour ce meme systeme de liste basculante....
J'ai donc repris le bout de code qui est proposé ici puisque je n'arrivais pas a m'en sortir avec le mien....

Or, ici tu dis que ca marche, mais tu utilise des fonctions (mettout, tout) qui n'existe meme pas dans ton code JavaScript proposé...J'ai bien lu ce sujet et je pense que tu as mélangé un peu toutes les réponse proposées....

Merci de m'éclairer....Le Javascript n'est pas mon fort.
Je bloque pour selectionnée tout les items passé dans la seconde liste, car quand je les surligne a la main....Ca marche!!! Sinon....rien !

Merci !!!
0
Rejoignez-nous