Page 1 sur 1

Listes dynamiques - problème

Posté : 24 sept. 2005, 16:45
par tintinole
Je voudrais rafraichir dynamiquement des selects sans rechargement de la page. J'ai créé le code suivant, mais il ne fonctionne pas : seule le premier lieu s'affiche ("Beaune") et la première structure "HDI Beaune").
Si vous pouviez m'aider SVP, je ne comprends pas. Merci d'avance

Fichier test.php
<SCRIPT>
//Creation du tableau
Tlieu=new Array();
Tbatiment=new Array();
Tstructure=new Array();
Tlieu[0]='Beaune';
Tbatiment[0]=new Array();
Tbatiment[0][0]=new Array();
Tbatiment[0][0][0]='HDI de B';
Tstructure[0][0][0]=new Array();
Tstructure[0][0][0][0]='Centre de B.';
Tstructure[0][0][0][1]='B-CDI';
Tstructure[0][0][0][2]='FI';
Tstructure[0][0][0][3]='ICE';
Tstructure[0][0][0][4]='SA BE';
Tstructure[0][0][0][5]='SA BO';
Tstructure[0][0][0][6]='SA NG';
Tstructure[0][0][0][7]='SA SA';
Tstructure[0][0][0][8]='GSM';
Tstructure[0][0][1]=new Array();
Tstructure[0][0][1][0]='Centre des IF de B';
Tstructure[0][0][1][1]='Dessin';
Tstructure[0][0][1][2]='Géo';
Tstructure[0][0][1][3]='Récept';
Tstructure[0][0][1][4]='Sf 1';
Tstructure[0][0][1][5]='Sf 2';
Tstructure[0][0][2]=new Array();
Tstructure[0][0][2][0]='CH de B';
Tstructure[0][0][2][1]='Contrôle';
Tstructure[0][0][2][2]='Fichier';
Tstructure[0][0][2][3]='Réception - Comptabilité';
Tstructure[0][0][3]=new Array();
Tstructure[0][0][3][0]='Divers B';
Tstructure[0][0][3][1]='Restaurant administratif';
Tstructure[0][0][4]=new Array();
Tstructure[0][0][4][0]='RE de B';
Tstructure[0][0][4][1]='CE';
Tstructure[0][0][4][2]='Compta';
Tstructure[0][0][4][3]='IFU 1';
Tstructure[0][0][4][4]='IFU 2';
Tlieu[1]='Chatillon sur Seine';
Tbatiment[1]=new Array();
Tbatiment[1][0]=new Array();
Tbatiment[1][0][0]='HDI de C';
Tstructure[1][0][0]=new Array();
Tstructure[1][0][0][0]='CR de C';
Tstructure[1][0][0][1]='ICE';
Tstructure[1][0][0][2]='IFU';
Tstructure[1][0][0][3]='SA de C';
Tlieu[2]='Dijon';
Tbatiment[2]=new Array();
Tbatiment[2][0]=new Array();
Tbatiment[2][0][0]='DS (Social)';
Tstructure[2][0][0]=new Array();
Tstructure[2][0][0][0]='Serv soc';
Tstructure[2][0][0][1]='Délégation';
Tstructure[2][0][0][2]='M T';
Tbatiment[2][1]=new Array();
Tbatiment[2][1][0]='DS DIJON';
Tstructure[2][1][0]=new Array();
Tstructure[2][1][0][0]='DSF';
Tstructure[2][1][0][1]='CDA';
Tstructure[2][1][0][2]='Délégation à la communication';
Tstructure[2][1][0][3]='DIV I';
Tstructure[2][1][0][4]='DIV II';
Tstructure[2][1][0][5]='DIV III';
Tstructure[2][1][0][6]='DIV IV';
Tstructure[2][1][0][7]='Secrétariat';
Tbatiment[2][2]=new Array();
Tbatiment[2][2][0]='FORPRO DIJON';
Tstructure[2][2][0]=new Array();
Tstructure[2][2][0][0]='CRF';
Tstructure[2][2][0][1]='OCS';
Tbatiment[2][3]=new Array();
Tbatiment[2][3][0]='HDI D';
Tstructure[2][3][0]=new Array();
Tstructure[2][3][0][0]='ASU';
Tstructure[2][3][0][1]='Accueil';
Tstructure[2][3][0][2]='Imprimés';
Tstructure[2][3][0][3]='Loge';
Tstructure[2][3][1]=new Array();
Tstructure[2][3][1][0]='BRF';
Tstructure[2][3][1][1]='Géo';
Tstructure[2][3][1][2]='TOPO';
Tstructure[2][3][2]=new Array();
Tstructure[2][3][2][0]='C DN';
Tstructure[2][3][2][1]='Renfort';
Tstructure[2][3][2][2]='SA D';
Tstructure[2][3][2][3]='SA G';
Tstructure[2][3][2][4]='SA IT';
Tstructure[2][3][2][5]='SA M';
Tstructure[2][3][2][6]='SA Mo';
Tstructure[2][3][2][7]='SA P';
Tstructure[2][3][2][8]='SA Q';
Tlieu[3]='Montbard';
Tbatiment[3]=new Array();
Tbatiment[3][0]=new Array();
Tbatiment[3][0][0]='HDI MONTBARD';
Tstructure[3][0][0]=new Array();
Tstructure[3][0][0][0]='CR de Montbard';
Tstructure[3][0][0][1]='ICE';
Tstructure[3][0][0][2]='IFU';
Tstructure[3][0][0][3]='SA M';

function ViderListe(MyList)
{do
  MyList.remove(0);
while (MyList.length)
}

function RempliLieu(MyForm)
{
  ViderListe(MyForm.Lieu);
	taille=Tlieu.length;
  for (i = 0; i < taille; i++)
	{
    var MyOption=document.createElement('OPTION');
    MyOption.text=Tlieu[i];
    MyOption.value=Tlieu[i];
    MyForm.Lieu.add(MyOption);
  }  
}

function ChangeBatiment(MyIndex, MyForm)
{ViderListe(MyForm.Batiment);
	var taille=Tbatiment[MyIndex].length;
  for (i=0; i<taille; i++)
  {
    var MyOption=document.createElement('OPTION');
    MyOption.text=Tbatiment[MyIndex][i][0];
    MyOption.value=Tbatiment[MyIndex][i][0];
    MyForm.Batiment.add(MyOption);
  } 
	ChangeStructure(MyIndex,0,MyForm); 
}

function ChangeStructure(IndexLieu,MyIndex,MyForm)
{ViderListe(MyForm.Structure);
	var taille=Tstructure[IndexLieu][MyIndex].length;
  for (i=0; i<taille; i++)
  {
    var MyOption=document.createElement('OPTION');
   MyOption.text=Tstructure[IndexLieu][MyIndex][i][0];
   MyOption.value=Tstructure[IndexLieu][MyIndex][i][0];
   MyForm.Structure.add(MyOption);
  }  
  ChangeService(IndexLieu,MyIndex,0,MyForm);
}
function ChangeService(IndexLieu,IndexBatiment,MyIndex,MyForm)
{ViderListe(MyForm.Service);
	var taille=Tstructure[IndexLieu][IndexBatiment][MyIndex].length;
  for (i=1; i<taille; i++)
  {
    var MyOption=document.createElement('OPTION');
    MyOption.text=Tstructure[IndexLieu][IndexBatiment][MyIndex][i];
    MyOption.value=Tstructure[IndexLieu][IndexBatiment][MyIndex][i];
    MyForm.Service.add(MyOption);
  }  
}
</SCRIPT>

<?

// Début formulaire de recherche
echo "<FORM NAME=multirecherche ACTION=\"test.php\" METHOD=\"GET\">";
echo "<TABLE >";
echo    "<TR>";
echo      "<TD >Lieu";
echo      "<TD>";
echo          "<SELECT NAME=Lieu ONCHANGE=\"ChangeBatiment(this.selectedIndex,this.form);\">";
echo          "</SELECT>";                   
echo      "<TD">";
echo      "<TD>Batiment";
echo      "<TD>";
echo 	"<SELECT NAME=Batiment ONCHANGE=\"ChangeStructure(this.form.Lieu.selectedIndex,this.selectedIndex,this.form);\">";
echo         "</SELECT>";                   
echo    "</TR>";
echo    "<TR>";
echo      "<TD>Structure";
echo      "<TD>";
echo        "<SELECT NAME=Structure ONCHANGE=\"ChangeService(this.form.Lieu.selectedIndex,this.form.Batiment.selectedIndex,this.selectedIndex,this.form);\">";
echo        "</SELECT>";                   
echo      "<TD>";
echo      "<TD>Service";
echo      "<TD>";
echo        "<SELECT NAME=Service>";
echo        "</SELECT>";                   
echo    "</TR>";
echo    "<TR>";
echo    "<TR>";
echo      "<TD colspan=\"2\" ALIGN=center>";
echo          "<INPUT TYPE=SUBMIT VALUE=\"Rechercher\">";
echo      "<TD>";
echo      "<TD colspan=\"2\" ALIGN=center>";
echo	 "<INPUT TYPE=RESET VALUE=\"Remise à blanc\" ONCLICK=\"location.href='test.php?Lieu=&Batiment=&Structure=&Service=&SousService='\">";
echo    "</TR>";
echo "</TABLE>";
echo "</FORM>";
?>

<SCRIPT>
  RempliLieu(document.all.multirecherche);
  ChangeBatiment(0,document.all.multirecherche);
  ChangeStructure(0,0,document.all.multirecherche);
  ChangeService(0,0,0,document.all.multirecherche);
</SCRIPT>

Posté : 24 sept. 2005, 18:19
par Cyrano
Es-tu alé jeter un coup d'oeil sur un tuto à propos des listes déroulantes dynamiques ?

Listes dynamiques - problème

Posté : 25 sept. 2005, 08:00
par tintinole
Oui j'ai regardé le code c'est super mais mon problème est que je veux utiliser 4 champs select dynamiques.
De plus ce qui m'intéresse ici est de savoir ce qui cloche dans mon source, trouver l'erreur !!

Posté : 25 sept. 2005, 09:18
par Cyrano
Je ne suis pas un amateur très averti du JavaScript en général, mais je peux te renvoyer vers un tuto où tu as toutes les chances de trouver ta réponse.