onjour à toutes et à tous, j'ai grâce à un script en javascript une liste qui en alimente une deuxième. La première est alimentée par une requête mysql.

Le soucis c'est lorsque je valide le formumlaire, la récupération des données de la seconde liste ne se fait pas, en effet le script ne récupère que la dernière valeur ajoutée.

Voici le code qui donne les listes:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<label>Comptes en gestion</label><table>
  <tr>
    <td>
      <select name="liste_champs" size="15" multiple class="multiple" OnDblClick="javascript:selection_champs(this.form.liste_champs,this.form.selection)" >
        <?php $sql="SELECT * FROM `client`" ; 
                  $result=mysql_query($sql) or die;
                  while($data=mysql_fetch_assoc($result))
                  {?>
        <option value="<?php echo $data['code_client'] ; ?>">(<?php echo $data['code_client'] ; ?>) <?php echo $data['raison_sociale'] ; ?></option>
        <?php }?>
 
        </select>
      </td>
    <td>
      <table>
        <tr><td><input class="bouton" type="button" name="selectionner" value=" >> " OnClick="javascript:selection_champs(this.form.liste_champs,this.form.selection)"></td></tr>
        <tr><td><input class="bouton" type="button" name="deselect" value=" << " OnClick="javascript:selection_champs(this.form.selection,this.form.liste_champs)"></td></tr>
        </table>
      </td>
    <td><select name="selection" size="15" multiple  class="multiple" OnDblClick="javascript:selection_champs(this.form.selection,this.form.liste_champs)"></select></td>
    <td>
      <table>
        <tr><td><input class="bouton" type="button" name="up" value=" + " OnClick="javascript:priorite_champ(this.form.selection,'up')"></td></tr>
        <tr><td><input class="bouton" type="button" name="down" value=" - " OnClick="javascript:priorite_champ(this.form.selection,'down')"></td></tr>
        </table>
      </td>
  </tr>
  </table>
</td>
    </tr>
</table>
et le javascript si ça peut aider, bien que je doute que le problème vienne de la. j'ai un peu plus de 1000 données qui viennent alimenter la première liste.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<script type="text/javascript">
function selection_champs(champs,champs_affiche){
   //on récupère l'endroit sélectionner dans le select source
    selection = champs.selectedIndex;
    if(selection != -1){
        //on déselectionne tous les champs du select de destination où va être placer le(s) champ(s) selectionner
        while(champs_affiche.selectedIndex != -1){
            champs_affiche.options[champs_affiche.selectedIndex].selected = false;
        }
 
        while(champs.selectedIndex > -1){
            if(champs.options[champs.selectedIndex].value == "Id_type_bien"){
                champs.options[champs.selectedIndex] = null;
                champs.form.Id_categorie_bien.options[0].select= true;
            }else{
                //on cherche la place de notre champ
                for(place=0;place<champs_affiche.length;place++){
                    if(champs_affiche.options[place].text > champs.options[champs.selectedIndex].text){
                        break;
                    }
                }
                //on décale tous les champs
                for(i=champs_affiche.length;i>place;i--){
                    champs_affiche.options[i] = new Option(champs_affiche.options[(i-1)].text,champs_affiche.options[(i-1)].value);
                }
 
                //on insère le champ selectionner
                champs_affiche.options[place] = new Option(champs.options[champs.selectedIndex].text,champs.options[champs.selectedIndex].value);
                champs.options[champs.selectedIndex] = null;
                champs_affiche.options[place].selected = true;
            }
        }
 
        if(champs.length > 0){
            if(selection >= champs.length ){
                selection = champs.length-1;
            }
            champs.options[selection].selected = true;
        }
    }
}
 
function select_all(frm){
    for(i=0;i<frm.liste_champs.length;i++){
        frm.liste_champs.options[i].selected = true;
    }
    frm.liste_champs.name = "liste_champs[]";
 
    for(i=0;i<frm.selection.length;i++){
        frm.selection.options[i].selected = true;
    }
    frm.selection.name = "selection[]";
}
 
function priorite_champ(selection,mode){
    if(selection.length < 2 ){return;}
    old_place = selection.selectedIndex;
    if(mode == 'up' && old_place > 0){
        new_place = old_place-1;
    }else if(mode == 'down' && old_place < selection.length-1){
        new_place = old_place+1;
    }
 
    tmp = new Option(selection.options[new_place].text,selection.options[new_place].value);
    selection.options[new_place] = new Option(selection.options[old_place].text,selection.options[old_place].value);
    selection.options[old_place] = new Option(tmp.text,tmp.value);
    selection.options[new_place].selected = true;
}
</script>
Par avance merci pour votre aide.