Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1569 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  trier une listbox par ordre alpha.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

trier une listbox par ordre alpha.

n°1424255
glabou
Posté le 11-08-2006 à 12:02:09  profilanswer
 

Bonjour,
 
Je code un peu en PHP, mais je ne connais pas le javascript.
J'ai créer une page avec 2 listbox d'après ce code javascript :
http://www.editeurjavascript.com/s [...] _3_561.php
J'ai modifié mon code pour alimenter la listbox 1 avec des données d'une base MySql, et par odre alphabétique :

Code :
  1. $selectmots="select * from motscles order by mots";


Je peux transférer mes éléments de la liste 1 vers la liste 2 et vice-versa sans problème.
 
Mais ce que je voudrais en plus, c'est que quand je transfere un élément de la liste 2 vers la liste 1, la liste 1 soit trier par ordre alphabétique.
Or là, il me met l'élément en bas de la liste 1.
J'essaye de placer "sort();" dans le javascript, mais ça ne marche pas, forcément.
 
Pouvez vous m'aider ?
Merci.

mood
Publicité
Posté le 11-08-2006 à 12:02:09  profilanswer
 

n°1424306
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-08-2006 à 13:09:08  profilanswer
 

Qu'est ce que tu veux dire exactement par:

Citation :

Je peux transférer mes éléments de la liste 1 vers la liste 2 et vice-versa sans problème.


ton "transfert" de list1 à list2 tu le fais en js? avec ajout/suppression de noeud? ou alors c'est un bout de ton truc en php?

n°1424384
glabou
Posté le 11-08-2006 à 14:19:33  profilanswer
 

oui je passe les éléments de la list1 à la list2 en javascript.
je me sers de php, juste pour aller chercher la liste des éléments sur ma base MySql.

n°1424388
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-08-2006 à 14:31:11  profilanswer
 

fais péter ton js ... [:spamafote]

n°1424417
glabou
Posté le 11-08-2006 à 14:58:47  profilanswer
 

ok je fais tout péter. :jap:

Code :
  1. <html>
  2. <head><title>Test</title>
  3. <script language="Javascript">
  4. // Transfert une ligne de la liste Origine à la liste Destination
  5. function TransfertListe(idOrigine, idDestination)
  6. { var objOrigine = document.getElementById(idOrigine);
  7. var objDestination = document.getElementById(idDestination);
  8. if (objOrigine.options.selectedIndex<0) return false;
  9. if (VerifValeurDansListe(idDestination, objOrigine.options[objOrigine.options.selectedIndex].value, true)) return false;
  10. var ADeplacer = new Option(objOrigine.options[objOrigine.options.selectedIndex].text, objOrigine.options[objOrigine.options.selectedIndex].value);
  11. objDestination.options[objDestination.length]=ADeplacer;
  12. objOrigine.options[objOrigine.options.selectedIndex]=null;
  13. }
  14. // Vérifie la présence de Valeur dans IdListe
  15. function VerifValeurDansListe(IdListe, Valeur, blnAlerte) {
  16. var objListe = document.getElementById(IdListe);
  17. for (i=objListe.length-1;i>=0;i--)
  18. if (objListe.options[i].value == Valeur)
  19. {
  20.  if (blnAlerte) alert('Déjà présent.');
  21.  return true;
  22. }
  23. return false;
  24. }
  25. </script>
  26. </head>
  27. <body>
  28. <?
  29. //connection
  30. $sql_host="****";
  31. $sql_user="****";
  32. $sql_pass="*****";
  33. mysql_connect($sql_host,$sql_user,$sql_pass) or die ("DBMS Server Error" );
  34. mysql_select_db("DOCINFO" ) or die ("DBMS Database Error" );
  35. // chargement des mots-clés
  36. $selectmots="select * from motscles order by mots";
  37. $querymots=mysql_query($selectmots);
  38. $nbrelignesmots=mysql_num_rows($querymots);
  39. $i=0;
  40. ?>
  41. <select name="la_liste_1" id="la_liste_1" style="width:100px;" size=10 ondblclick="TransfertListe('la_liste_1','la_liste_2');" >
  42. <?
  43. //chargement mots clés
  44. while($i<$nbrelignesmots)
  45. {
  46.  $optionmot=mysql_result($querymots,$i,"mots" );
  47.  print "<option value=$i>$optionmot</option>";
  48.  $i++;
  49. }
  50. ?>
  51. </select>
  52. &nbsp;&nbsp;
  53. <select name="la_liste_2" id="la_liste_2" style="width:100px;" size=10 ondblclick="TransfertListe('la_liste_2','la_liste_1');" >
  54. </select>
  55. </body>
  56. </html>


 
c'est mon fichier complet.
avec des morceaux de js et php dedans.


Message édité par glabou le 11-08-2006 à 15:10:51
n°1424439
olivthill
Posté le 11-08-2006 à 15:26:03  profilanswer
 

Il suffit de modifier la fonction TransfertListe() de la manière suivante :

// Transfert une ligne de la liste Origine à la liste Destination
function TransfertListe(idOrigine, idDestination)
{ var objOrigine = document.getElementById(idOrigine);
 var objDestination = document.getElementById(idDestination);
 if (objOrigine.options.selectedIndex<0) return false;
 if (VerifValeurDansListe(idDestination, objOrigine.options[objOrigine.options.selectedIndex].value, true))
     return false;
 var ADeplacer = new Option(objOrigine.options[objOrigine.options.selectedIndex].text, objOrigine.options[objOrigine.options.selectedIndex].value);
 
 // Recherche la bonne position dans la listbox de destination
 var i;
 for (i = 0; i < objDestination.options.length; i++) {
  if (objDestination.options[i].text > ADeplacer.text)
   break;
 }
 
 // Décale vers le bas
 for (var j = objDestination.options.length - 1; j >= i; j--) {
  objDestination.options[j+1]=new Option(objDestination.options[j].text,objDestination.options[j].value);
 }
 
 // Insert l'option
 objDestination.options[i]=ADeplacer;
 
 // Supprime l'option de la listbox d'origine
 objOrigine.options[objOrigine.options.selectedIndex]=null;
}

n°1424451
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-08-2006 à 15:35:16  profilanswer
 

C'est ta ligne 11 qu'il faut modifier :)
La tu rajoutes "bêtement" en dernière position sur la liste.
Il va falloir que tu trouves en dessous entre quelles options tu dois placer celui que tu rajoutes.
Vu que le code que tu as utiliser ça risque de pas être evident.
Il aurait mieux valu tout faire avec du DOM :D un truc dans le genre

Code :
  1. function TransfertListe(idOrigine, idDestination){
  2.   var objOrigine = document.getElementById(idOrigine);
  3.   var objDestination = document.getElementById(idDestination);
  4.   if (objOrigine.options.selectedIndex<0) return false;
  5.   if (VerifValeurDansListe(idDestination, objOrigine.options[objOrigine.options.selectedIndex].value, true)) return false;
  6.   var selOpt = objOrigine.getElementsByTagName('option')[objOrigine.options.selectedIndex];
  7.   var optNodes = objDestination.getElementsByTagName('option');
  8.   var optPos = -1;
  9.   for(var i=0; i< optNodes.length; i++){
  10.     if ( optNodes[i].value > selOpt.value ){
  11.       optPos = i;
  12.       break;
  13.     }
  14.   }
  15.   if ( optPos == -1){
  16.     objDestination.appendChild(selOpt);
  17.   } else {
  18.     objDestination.insertBefore(selOpt, optNodes[optPos]);
  19.   }
  20. }


 
edit: p0wned mais moi j'ai tout récrit avec du DOM, et c'est plus zoli :o


Message édité par anapajari le 11-08-2006 à 15:36:06
n°1424517
glabou
Posté le 11-08-2006 à 16:28:51  profilanswer
 

Merci beaucoup. Ca marche comme je le souhaitais.
J'ai essayé de comprendre.....mais je capte vraiment pas grand chose en javascript  :p  
Pour le DOM, euh tu me parle chinois. loool. mais c'est pas grave.
 
Ce qui m'embete c'est que si j'ai un problème occasionnel en js, je vais devoir repasser sur le forum. Et vu que j'ai trouvé un autre script js que je veux appliquer, ça risque d'être bientôt. lool
 
Anapajari : t'as pas un lien vers un bon tutorial d'apprentissage js ?
 
Bon we.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  trier une listbox par ordre alpha.

 

Sujets relatifs
textbox et listbox effacement d'un formulaire VBA[Résolu] [Algo] Stabilisation et Système du premier ordre
[ Batch Dos ] Ordre d'execution batch dostrier une colonne
trier une listboxTableau à trier en fct de deux champs
Listbox et rowsourceCollection d'Objet en php + gérer ordre de fichiers sur le serveur ?
Trier des caracteres avec accents ? 
Plus de sujets relatifs à : trier une listbox par ordre alpha.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR