[Votre Avis] - Selection d'un theme -> Catégorie -> Sous-catégorie

- Selection d'un theme -> Catégorie -> Sous-catégorie [Votre Avis] - HTML/CSS - Programmation

Marsh Posté le 07-10-2004 à 10:49:09    

Voila, dans le cadre d'un site internet, je dois à un moment donner dans une fenêtre, donner à l'utilisateur la possibilité de choisir un thème, puis une catégorie, puis enfin une sous-catégorie.  
 
Pour cela je dispose d'une base de donnée contenant une liste de "rubriques" avec le numéro de la rubrique et l'intitulé de la rubrique. La numérotation s'effectue sur 4 chiffres, si bien qu'au final, toutes les rubriques des milliers (1000, 2000, 3000, ...) représentent les "thèmes", toutes les rubriques des centaines (1100, 1200, 1300, ...) représentent les "catégories", et le reste (1101, 1102, 1103...) représentent les sous-catégories.
 
Primo, il y a environ 250 rubriques, et donc, je ne peux pas me permettre de juste mettre une liste déroulante pour le choix.
 
Secundo, ce que je souhaite récupérer au final, c'est le code de la rubrique. (L'intitulé ne m'interesse evidement pas, puisqu'a partir du numéro je peux le récupérer.)
 
Comme cette liste est sujete à changements et que la base de donnée n'est pas exclusive à internet, ces données restent dynamique.
 
Pour la génération de la page, j'ai à ma disposition le PHP.
 
-------
 
J'imaginais au départ faire 3 menus déroulants avec génération dynamique par javascript du contenu affiché en fonction des sélections. (L'utilisateur sélectionne les 1000, affichage des 1100, 1200, ...  dans le menu déroulant "catégorie".)
 
Une autre solution consisterait à le générer en php et à afficher la page au fur et a mesure de son choix. La fenetre étant en pop-up (ouhouh, c'est mal ! ;)), elle ne contiendra que ce menu.
 
Mais je me demande si c'est vraiment la plus belle méthode. Avez-vous des sugestions ?


Message édité par ucl-madcow le 07-10-2004 à 10:52:49
Reply

Marsh Posté le 07-10-2004 à 10:49:09   

Reply

Marsh Posté le 07-10-2004 à 13:17:47    

un ptit code que j'ai eu utiliser ...
cadeau ...
 

Code :
  1. <SCRIPT type="text/javascript">
  2. var menu=new CreerMenu(3,"Theme","Categorie","SousCategorie","SousSousCategorie","_blank" );
  3. // CreerMenu(Nb de listes, titre1, titre2, titre3, target)
  4. // Nb listes=4 maxi
  5. // Les 4 titres sont obligatoires (meme si Nb_liste<4)
  6. // target=nom de la frame ou "self" si c'est la fenetre elle meme, "_blank" pour une nouvelle
  7. // Pour ajouter les liens dans les listes, utiliser menu.Add
  8. // Menu.Add(numéro de la liste, texte, page à charger)
  9. menu.Add(1,"1000","" );
  10. menu.Add(2,"1100","" );
  11.  menu.Add(3,"1110","URL" );
  12.  menu.Add(3,"1120","URL" );
  13. menu.Add(2,"1200","" );
  14.  menu.Add(3,"1210","URL" );
  15.  menu.Add(3,"1220","URL" );
  16. menu.Add(1,"2000","" );
  17. menu.Add(2,"2100","" );
  18.  menu.Add(3,"2110","URL" );
  19.  menu.Add(3,"2120","URL" );
  20. menu.Add(2,"2200","" );
  21.  menu.Add(3,"2210","URL" );
  22.  menu.Add(3,"2220","URL" );
  23. function CreerMenu(profondeur,titre1,titre2,titre3,titre4,target) {
  24. this.nb=0;this.prof=profondeur;
  25. this.titre1=titre1; this.titre2=titre2; this.titre3=titre3; this.titre4=titre4; this.target=target
  26. this.Add=AddObjet;
  27. this.Aff=AffMenu;
  28. }
  29. function AddObjet(deep,txt,page) {
  30. var rub = new Object;
  31. rub.deep=deep;
  32. rub.txt=txt;
  33. rub.page=page;
  34. this[this.nb]=rub;
  35. this.nb++;
  36. }
  37. function AffMenu() {
  38. var Z="<FORM name='mf'>";
  39. Z+="<SELECT size=1 name='list1' onChange='Clic(1)'><OPTION selected>"+this.titre1+"</OPTION>";
  40. for (var i=0;i<this.nb;i++) {
  41.  if (this[i].deep==1) {
  42.   Z+="<OPTION value='"+i+"'>"+this[i].txt+"</OPTION>"
  43.  }
  44. }
  45. Z+="</SELECT><br>";
  46. for (var i=2;i<=menu.prof;i++) {
  47.  Z+="<SELECT name='list"+i+"' onChange='Clic("+i+" )'><OPTION>"+eval("menu.titre"+i)+"</OPTION><OPTION></OPTION><OPTION></OPTION><OPTION></OPTION><OPTION></OPTION><OPTION></OPTION></SELECT><BR>";
  48. }
  49. Z+="</FORM>";
  50. document.write(Z);
  51. }
  52. function add() {
  53. var c=new Option("ADD","",true,true);
  54. document.forms[0].elements["list"].options[0]=c;
  55. }
  56. function Clic(no) {
  57. var valeur=document.forms["mf"].elements["list"+no].options[ document.forms["mf"].elements["list"+no].selectedIndex].value;
  58. if ((valeur!="" )&&(valeur!=null)&&(no<menu.prof)) {
  59.  var deep=menu[valeur].deep;
  60.  var no2=1;
  61.  for (var noX=(no+1);noX<=menu.prof;noX++) {
  62.   document.forms["mf"].elements["list"+eval(noX)].options.length=0;
  63.   var titre=eval("menu.titre"+noX);
  64.   var c=new Option(titre);
  65.   document.forms["mf"].elements["list"+(noX)].options[0]=c;
  66.   document.forms["mf"].elements["list"+(noX)].selectedIndex=0;
  67.  }
  68.  valeur++;
  69.  for (var i=valeur;i<menu.nb;i++) {
  70.   //alert(i);
  71.   if (menu[i].deep==deep+1) {
  72.    //alert("no="+no+" texte="+menu[i].txt);
  73.    var c=new Option(menu[i].txt,i);
  74.    document.forms["mf"].elements["list"+(no+1)].options[no2]=c;
  75.    no2++;
  76.   } else { if (menu[i].deep==deep){i=menu.nb;}}
  77.  }
  78.  document.forms["mf"].elements["list"+(no+1)].options.length=no2+1;
  79.  document.forms["mf"].elements["list"+(no+1)].selectedIndex=0;
  80.  Clic(no+1)
  81.  valeur--;
  82. }
  83. if ((valeur!="" )&&(valeur!=null)) {
  84.  var page=menu[valeur].page;
  85.  if ((page!="" )&&(page!=null)) {
  86.   if (menu.target=="self" ) {window.location=page}
  87.   else if (menu.target=="_blank" ) {window.open(page,"","menubar,scrollbars,toolbar,status,location" )}
  88.   else {parent.frames[menu.target].location.href=page;}
  89.  }
  90. }
  91. }
  92. </SCRIPT>

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed