par
Truc » 27 déc. 2005, 01:07
Mais au submit, la boucle ne reconnait aucun des $_POST...
Certainement logique puisque la variable POST ne contient que les éléments séléctionnés !
Il faut donc séléctionner tous les éléments des différentes listes avant de valider le formulaire:
Pour cela une fonction Javscript peut faire l'affaire:
function select_all()
{
for(j=2;j<=6;j++) // boucle permettant de parcourir les listes
{
var num_liste='liste'+j;
var lg = document.getElementById(num_liste).length; //longueur de la liste traitée
for(i=0;i<lg;i++)
document.getElementById(num_liste).options[i].selected= true; //séléction des éléments de la liste
document.getElementById(num_liste).name +="[]"; // ajout des [] pour permettre au php de récupérer la liste sous forme d'array
//ne pas mettre directement "liste2[]" sinon la 1ere fonction Deplacer() ne fonctionnera plus ainsi.
}
formulaire.submit(); // validation du formulaire.
}
1. permettre aux listes la multi-séléction avec l'attribut "multiple"
2.ajouter un id a chaque liste sous la forme: id="liste2", id="liste3", ...
3.attribut name sans crochets: name="liste2", name="liste3", ...
Ce qui donne pour la liste 2:
<SELECT id="liste2" name="liste2" multiple>
Ensuite tu récupère les listes avec $_POST['liste2'], $_POST['liste3'].[/quote]
[quote="cpnadal"]Mais au submit, la boucle ne reconnait aucun des $_POST...
[/quote]
Certainement logique puisque la variable POST ne contient que les éléments séléctionnés !
Il faut donc séléctionner tous les éléments des différentes listes avant de valider le formulaire:
Pour cela une fonction Javscript peut faire l'affaire:
[php]function select_all()
{
for(j=2;j<=6;j++) // boucle permettant de parcourir les listes
{
var num_liste='liste'+j;
var lg = document.getElementById(num_liste).length; //longueur de la liste traitée
for(i=0;i<lg;i++)
document.getElementById(num_liste).options[i].selected= true; //séléction des éléments de la liste
document.getElementById(num_liste).name +="[]"; // ajout des [] pour permettre au php de récupérer la liste sous forme d'array
//ne pas mettre directement "liste2[]" sinon la 1ere fonction Deplacer() ne fonctionnera plus ainsi.
}
formulaire.submit(); // validation du formulaire.
} [/php]
1. permettre aux listes la multi-séléction avec l'attribut "multiple"
2.ajouter un id a chaque liste sous la forme: id="liste2", id="liste3", ...
3.attribut name sans crochets: name="liste2", name="liste3", ...
Ce qui donne pour la liste 2:
[php]<SELECT id="liste2" name="liste2" multiple>[/php]
Ensuite tu récupère les listes avec $_POST['liste2'], $_POST['liste3'].[/quote]