formulaire "dynamique"

formulaire "dynamique" - HTML/CSS - Programmation

Marsh Posté le 05-07-2005 à 12:54:16    

Bonjour a tous,
je travaille à l'élaboration d'un formulaire d'ajout d'informations dans une BDD à l'aide de PHP.
J'utilise une classe disponible ici : http://www.aidejavascript.com/article106.html
Le formulaire contient deux listes déroulantes, dont le contenu est lu à partir de la BDD.
J'aimerais faire en sorte que le contenu de la deuxieme liste depende de celui de la premiere et donc qu'il soit affiché en fonction du choix de l'utilisateur.
J'ai parcouru le forum, vu quelques solutions proposées mais je ne parviens pas (je crois :D) a les mettre en oeuvre, j'aimerais donc avoir plus d'informations à ce sujet.
 
Merci,

Reply

Marsh Posté le 05-07-2005 à 12:54:16   

Reply

Marsh Posté le 05-07-2005 à 14:18:24    

Si c'est pour un intranet tu peux utiliser ceci:
http://www.toutjavascript.com/savo [...] quest.php3

Reply

Marsh Posté le 05-07-2005 à 14:53:20    

ca correspond a peu pres a ce que je recherche, je vais creuser de ce coté la. Merci de ta réponse

Reply

Marsh Posté le 05-07-2005 à 14:55:56    

De rien.

Reply

Marsh Posté le 06-07-2005 à 10:28:52    

J'ai quelques soucis pour comprendre le fonctionnement de cette solution, n'ayant aucune notion en javascript, j'aimerais particulierement avoir plus d'informations concernant les lignes suivantes dans le script de la partie 5 du site que tu m'as donné :
 

Code :
  1. echo 'var o = null;';
  2. echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];';
  3. echo 's.options.length = 0;';
  4. while($r = mysql_fetch_array($result))
  5. echo 's.options[s.options.length] = new Option("'.$r["Species"].'" );';

Reply

Marsh Posté le 06-07-2005 à 12:12:59    

voila le code que j'ai modifié ... si quelqu'un peut m'expliquer pourquoi ca ne fonctionne pas d'après l'exemple donné sur le site je suis interessé !
 
fichier test.php

Code :
  1. <div class="Centered">
  2. <form class="CenteredForm" name="form_selects" id="form_selects" action="" method="" onsubmit="return false;">
  3.  <fieldset>
  4.   <legend>Faites un choix dans la liste de gauche<br />et observez le résultat dans celle de droite</legend>
  5.   <div class="Left">
  6.   Famille&nbsp;:
  7.   <select name="nomsecteur" id="nomsecteur" class="ButtonL" onchange="request05(this.form)">
  8.    <option value="" selected="selected"></option>
  9.    <option value="HABITAT"             >Habitat</option>
  10.    <option value="ARTISAN FRANCAIS"             >Félidés</option>
  11.    <option value="Équidés"             >Équidés</option>
  12.    <option value="Bovidés"             >Bovidés</option>
  13.   </select>
  14.   &nbsp;&nbsp;&nbsp;Espèces&nbsp;:
  15.   <select name="list2" id="list2" class="ButtonL">
  16.   </select>
  17.   </div>
  18.  </fieldset>
  19. </form>
  20. </div>
  21. <SCRIPT language=javascript>
  22. var l1    = f.elements["nomsecteur"];
  23. var l2    = f.elements["list2"];
  24. var index = l1.selectedIndex;
  25. if(index < 1)
  26.    l2.options.length = 0;
  27. else {
  28.    var xhr_object = null;
  29.    if(window.XMLHttpRequest) // Firefox
  30.       xhr_object = new XMLHttpRequest();
  31.    else if(window.ActiveXObject) // Internet Explorer
  32.       xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
  33.    else { // XMLHttpRequest non supporté par le navigateur
  34.       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  35.       return;
  36.    }
  37.    xhr_object.open("POST", "test2.php", true);
  38.    xhr_object.onreadystatechange = function() {
  39.       if(xhr_object.readyState == 4)
  40.          eval(xhr_object.responseText);
  41.    }
  42.    xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded" );
  43.    var data = "family="+escape(l1.options[index].value)+"&form="+f.name+"&select=list2";
  44.    // Envoi des données du formulaire
  45.    xhr_object.send(data);
  46. }
  47. </SCRIPT>


 
 
fichier test2.php

Code :
  1. <?
  2. $mysql_db = @mysql_connect("localhost", "********", "******" );
  3. @mysql_select_db("idea-nova" );
  4. $query  = "SELECT `nomactivite` FROM `secteurs` WHERE `nomsecteur` = '".$_POST["nomsecteur"]."'";
  5. $query .= " ORDER BY `NomActivite`";
  6. $result = @mysql_query($query);
  7. echo $result;
  8. echo '<SCRIPT language=javascript>';
  9. echo 'var o = null;';
  10. echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];';
  11. echo 's.options.length = 0;';
  12. while($r = mysql_fetch_array($result))
  13.   {
  14.   echo $r,'<br>';
  15. echo 's.options[s.options.length] = new Option("'.$r["nomactivite"].'" );';
  16. }
  17. echo '</SCRIPT>';
  18. @mysql_close($mysql_db);
  19. ?>


Message édité par l3eleg le 06-07-2005 à 12:20:45
Reply

Marsh Posté le 06-07-2005 à 12:25:46    

Ca veut dire quoi que ca marche pas?
Y'a des erreurs? Ca te marque quelque chose?

Reply

Marsh Posté le 06-07-2005 à 12:29:27    

la liste déroulante qui est sensée se mettre à jour lorsque l'on fait son choix dans la premiere reste désespérement vide. De plus on dirait que le fichier test2.php n'est pas appelé car j'ai fais des echo dedans pour essayer de comprendre ce qui n'allait pas et je ne les vois pas apparaitre lors de l'appel de test.php
Je te remercie d'avance pour ton aide précieuse

Reply

Marsh Posté le 06-07-2005 à 12:34:34    

C'est normal que les vois pas, car tu fais un eval sur le retour de ton HttpRequest.

Reply

Marsh Posté le 06-07-2005 à 12:36:39    

hola hola ... comme je l'ai dis plus haut, j'ai jamais fais de javascript. Dans le cas présent, c'est normal de pas voir les echos ? ou de ne pas voir le contenu de la liste pris sur la BDD ?

Reply

Marsh Posté le 06-07-2005 à 12:36:39   

Reply

Marsh Posté le 06-07-2005 à 12:38:19    

De pas voir les echos. En fait tu les vois mais tu demandes à ce que ce soit considéré comme du code et donc intérprété.

Reply

Marsh Posté le 06-07-2005 à 12:42:23    

Ha d'accord. Donc les echo a partir de la ligne 11 dans test2.php n'ont pas besoin d'etre encadré par des balises script comme je l'ai rajouté dans le source.

Reply

Marsh Posté le 06-07-2005 à 12:44:54    

Bah non ya pas besoin

Reply

Sujets relatifs:

Leave a Replay

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