Listes dynamiques - problème

tintinole
Invité n'ayant pas de compte PHPfrance

24 sept. 2005, 16:45

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>

Mammouth du PHP | 19672 Messages

24 sept. 2005, 18:19

Es-tu alé jeter un coup d'oeil sur un tuto à propos des listes déroulantes dynamiques ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

tintinole
Invité n'ayant pas de compte PHPfrance

25 sept. 2005, 08:00

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 !!

Mammouth du PHP | 19672 Messages

25 sept. 2005, 09:18

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: