Bonjour à tous,
J'ai un select multiple qui affiche une liste d'items avec un ID comme value des options. Il y a, sur le select, un évènement onclick qui envoie l'id sélectionné à Ajax lequel le passe à PHP qui sélectionne les données correspondant à l'ID dans la BDD et les entre en session PHP sous forme de ligne indicées. Puis quand le httpRequest revient OK, je recharge la page pour afficher les lignes contenues dans la session.
Ok c'est classique est ça roule.
Mais ce que je voudrais faire, c'est pouvoir permettre au user de sélectionner plusieurs items, et donc, via Ajax, afficher toutes les lignes d'un coup.
Voici la fonction qui charge la ligne selon l'ID :
et celle qui est sensée appeler cette fonction autant de fois qu'il y a d'items sélectionnés :
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 function charge_ligne(id){ var xhr = getXhr('text'); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { var rst = xhr.responseText; window.location.reload(); } return xhr.readyState; } var data = "id="+id; xhr.open("GET", datas.php?"+data,true); }
Et donc, ça fonctionne moyennement. Un coup ça affiche 6 lignes sur 30 que contient le select, un coup 10 ou 12, mais jamais tout - dans le cas où je sélectionne tous les items...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 function charge_plusieurs_ligne(){ var selectbox = document.forms['choix'].elements['myitems']; var id = ""; for (var i = 0; i < selectbox.length; i++) { id = selectbox.options[i].value; charge_ligne(id); } }
Je suppose que c'est une question de délai, que peut-être il faudrait mettre un setInterval quelque part...où que je n'emploie pas la bonne méthode...
Bref, je veux bien quelques pistes.
Merci d'avance.
Partager