Listes déroulantes et affichages

Listes déroulantes et affichages - HTML/CSS - Programmation

Marsh Posté le 14-01-2010 à 17:59:39    

Bonjour à tous, je dispose actuellement d'une liste déroulante alimenter par une base de donnée.
Lorsque l'utilisateur sélectionne une option dans la liste, le choix choisis s'affiche sans ce rafraichir dans un tableau.
 
Voici le code :
 
Feuille1.php (Javascript)
 

Code :
  1. <script language="javascript">
  2. function request(url,cadre) {
  3. var XHR = null;
  4. if(window.XMLHttpRequest)
  5.  XHR = new XMLHttpRequest();
  6. else if(window.ActiveXObject)
  7.  XHR = new ActiveXObject("Microsoft.XMLHTTP" );
  8. else {
  9.  alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  10.  return;
  11. }
  12. XHR.open("GET",url, true);
  13. XHR.onreadystatechange = function attente() {
  14. if(XHR.readyState == 4)     {
  15.  document.getElementById(cadre).innerHTML = XHR.responseText;
  16.    }
  17. }
  18. XHR.send(null);
  19. return;
  20. }
  21.   </script>


 
Feuille1.php  
 

Code :
  1. <TR>
  2. <TD>
  3. <select onchange="request('donne.php?commercial='+this.value+'','xmlhttp')" name="lcommercial">
  4. <option selected="selected">Choisissez</option>
  5. <?php
  6. $requetecommercial= "select distinct ma_comvisu from ma_magasins";
  7. $rescommercial = mssql_query($requetecommercial);
  8. while($valcommercial=mssql_fetch_array($rescommercial)) {
  9. echo "<option value=".$valcommercial["ma_comvisu"]." >".$valcommercial["ma_comvisu"]."</option>";
  10. }
  11. echo"<option>Tous</option>";
  12. echo"</select>";
  13. ?>
  14.   </TD>
  15.  
  16.   <TD>
  17.   <select onchange="request('donne.php?date='+this.value+'','xmlhttp')" name="ldate" id="ldate">
  18. <?php
  19. $requetedate= "select distinct substring(MA_VisiteDECT,1,10) as date from ma_magasins order by substring(MA_VisiteDECT,1,10)";
  20.   $resdate = mssql_query($requetedate);
  21.  
  22.  
  23.   while($valdate=mssql_fetch_array($resdate)) {
  24. echo "<option>".$valdate["date"]."</option>";
  25. }
  26. echo"<option>Tous</option>";
  27. echo'<option selected="selected">Choisissez</option>';
  28. echo"</select>";
  29. ?>
  30. </TD>


 
donne.php
 

Code :
  1. <?php
  2. if(($_GET['commercial']!='Tous') && ($_GET['commercial']!='Choisissez')){
  3. $valeurcommercial = $_GET['commercial'];
  4. echo '<TR>';
  5. echo '<TD>';
  6. echo $valeurcommercial;
  7. echo '</TD>';
  8. echo '<TD>';
  9. echo '</TD>';
  10. echo '</TR>';
  11. }
  12. if(($_GET['commercial']=='Tous') || ($_GET['commercial']=='Choisissez')){
  13. $hostname = 'aa';
  14. $username = 'aa';           
  15. $password = 'aa';
  16. $base = 'aa';
  17. $cnx = mssql_connect($hostname, $username,$password) or die("erreur de connexion au serveur $host" );
  18. $db = mssql_select_db($base, $cnx) or die("Erreur de connexion a la base de donnees" );
  19. $requetecommercial= "select distinct ma_comvisu from ma_magasins";
  20. $rescommercial = mssql_query($requetecommercial);
  21.  
  22. while($valcommercial=mssql_fetch_array($rescommercial)) {
  23. echo '<TR>';
  24. echo '<TD>';
  25. echo $valcommercial["ma_comvisu"];
  26. echo '</br>';
  27. echo '</TD>';
  28. echo '</TR>';
  29. }
  30. }
  31. ?>


 
Comme vous pouvez le voir dans mon code Php, j'ai ajouter une seconde liste déroulante.
Je ne souhaite pas mettre à jour une liste déroulante par rapport à l'autre.
Cependant je voudrais que lorsque que je choisis une option dans la première liste, l'option par défaut de la seconde soit également pris en compte et vice versa.
 
Je m'explique, je dispose d'une liste Commercial et Date. Je choisis une date dans ma seconde liste déroulante sans toucher à la première,je voudrais que que cela m'affiche tous les commercial de cette date précise.
(Tous puisque je voudrais que la valeur par défaut des listes lors du premier affichage de la page soit "Choisissez" qui corespond à tous les commercial dans mon code)
 
Bon j'ai fais quelques test car il faut également que lorsque la page s'affiche pour la première fois (C'est à dire sans toucher aucune des deux listes) le contenu complet des deux liste doit s'afficher dans mon tableau.
 
Première colonne affichage de tous les commerciaux et deuxième colonne toutes les dates.
 
j'ai tenter d'ajouter ceci :
 

Code :
  1. <body onload = "request('donne.php?commercial=Tous','xmlhttp'); request('donne.php?date=Tous','xmlhttp')">


 
Sans réussite  :pt1cable:  
 
Merci de votre aide.   :)

Reply

Marsh Posté le 14-01-2010 à 17:59:39   

Reply

Marsh Posté le 15-01-2010 à 13:46:15    

Comme Monsieur Jourdain qui faisait de la prose sans le savoir, vous faîtes de l'Ajax sans donner l'impression de le savoir. Si vous n'êtes pas l'auteur de ce code, je vous conseillerais de lire des tutoriels sur Ajax, car vous comprendrez mieux comment ça marche, et comment changer votre code.
 
En bref, il faudrait :
 
1. Changer les paramètres en entrée d'Ajax.
Actuellement, le passage de paramètre est réalisé par la ligne :

<select onchange="request('donne.php?commercial='+this.value+'','xmlhttp')" name="lcommercial">


Il n'y a qu'un seul paramètre, qui est this.value, autrement dit qui est le choix dans la liste Commercial. Il faudrait ajouter le choix dans la liste Date. Mais, il faudrait écrire un peu de javascript complémentaire pour récupérer la valeur actuelle de l'autre liste.
 
2. Ajouter le critère de la date dans la partie serveur (PHP).
 
Pour l'initialisation, il n'est pas nécessaire de passer par onLoad et Ajax. Comme la page est générée dynamiquement par PHP, il suffit de bien la définir au début.

Reply

Sujets relatifs:

Leave a Replay

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