Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
754 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  rafraichissement d'un sélect

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

rafraichissement d'un sélect

n°1687281
fourniey
Rendre au prochain
Posté le 16-02-2008 à 13:56:44  profilanswer
 

Bonjour,
 
J'ai deux sélect qui fonctionnent ensemble, c'est-à-dire que le 2e dépend du choix effectué au premier sélect. Ça fonctionne plus ou moins bien à date.
 
1) quand je clique sur ok, le premier sélect (type) se réinitialise; je voudrais conserver le choix de l'usager  
 
2) Quand je fais un choix dans le premier sélect (type), je voudrais que le 2e sélect (an) soit mis à jour sans cliquer sur ok.
 
Voici le code des mes deux sélect.
 
Merci!
 

Code :
  1. // Sélection du statut
  2. echo '<tr>';
  3. echo '<th width="20%" align="right" height="35">Liste</th>';
  4. echo '<td>';
  5.  $type=$_POST['type'];
  6.  require("../../config.inc.php" );
  7.  $r_type = "SELECT distinct(type),TB_statut.description FROM `ATS_statut`
  8.       left join TB_statut on ATS_statut.type=TB_statut.code order by TB_statut.description";
  9.  $res = mysql_query($r_type);
  10.  echo '<select name="type">';
  11.  while($val=mysql_fetch_array($res)) {
  12.   echo "<option value=".$val["type"].">".$val["description"]."</option>\n";
  13.   if($type == $val["type"]) {echo ' selected="selected"';}
  14.  }
  15.  echo '</select>';
  16.  echo $type;
  17. echo '</td>';
  18. echo '</tr>';
  19. // Sélection de l'année
  20. echo '<tr>';
  21. echo '<th align="right" height="35">Année</th>';
  22. echo '<td>';
  23.  $r_an="SELECT distinct(an) FROM `ATS_statut` WHERE type='$type' order by an";
  24.  $res = mysql_query($r_an);
  25.  echo '<select name="an">';
  26.  while($val=mysql_fetch_array($res)) {
  27.   echo "<option value=>".$val["an"]."</option>\n";
  28.   if($an == $val["an"]) {echo ' selected="selected"';}
  29.  }
  30.  echo '</select>';
  31.  echo $an;
  32. echo '</td>';
  33. echo '</tr>';

mood
Publicité
Posté le 16-02-2008 à 13:56:44  profilanswer
 

n°1687284
weed
Posté le 16-02-2008 à 14:24:40  profilanswer
 

fourniey a écrit :

Bonjour,
 
J'ai deux sélect qui fonctionnent ensemble, c'est-à-dire que le 2e dépend du choix effectué au premier sélect. Ça fonctionne plus ou moins bien à date.
 
1) quand je clique sur ok, le premier sélect (type) se réinitialise; je voudrais conserver le choix de l'usager  


 
quand tu veux selectionner une valeur par defaut d'un select il faut utiliser l'atribut selected="selected"
http://www.w3schools.com/html/tryi [...] ml_select3
http://www.w3schools.com/html/html_forms.asp
 
oupsss, j'avais pas vu que tu as eu l'idée de faire ceci. Tu as bien commencé mais tu t'es trompé dans la syntaxe. L'atribut selected="selected" est dans la balise option. <option select="selected">toto</option>
 
 

Citation :

2) Quand je fais un choix dans le premier sélect (type), je voudrais que le 2e sélect (an) soit mis à jour sans cliquer sur ok.


plusieurs possibilité pour faire ceci :
- passer par de l'ajax
Au moment ou tu selectionne ton premier select, tu appelles une fonction JS avec l'événement onChange  
- qui créé le 2ème select en DOM
- qui fait un submit (rafraichissement de toute la page)

n°1687289
fourniey
Rendre au prochain
Posté le 16-02-2008 à 14:53:54  profilanswer
 

J'ai changé le selected et j'obtiens une erreur.
 

Code :
  1. echo '<select name="type">';
  2.  while($val=mysql_fetch_array($res)) {
  3.  $selected="";
  4.   if($type == $val["type"]) {
  5.    $selected=" selected=\"selected\"";
  6.   }
  7.   echo '<option value='.$val["type"].$selected.'>'.$val["description"] '</option>\n';
  8.  }
  9.  echo '</select>';


Message édité par fourniey le 16-02-2008 à 15:09:22
n°1687293
fourniey
Rendre au prochain
Posté le 16-02-2008 à 15:16:38  profilanswer
 

De cette façon, mon premier sélect est ok.
 
   $selected="";
   if($type == $val["type"]) {$selected=" selected=\"selected\"";}  
   echo '<option value='.$val["type"].$selected.'>'.$val["description"].'</option>\n';

n°1687474
weed
Posté le 17-02-2008 à 14:50:51  profilanswer
 

voila très bien en effet ...
 
Apres, utilises l'évenement onChange sur ton 1er select :
 
echo '<select name="type" onChange="fsubmit()" >';
 
et créé toi une fonction JS ou tu submit ton formulaire (par exemple) :

<script>
function fsubmit ()
{
//tu submit ton formulaire
 
}
</script>


Message édité par weed le 17-02-2008 à 14:51:23
n°1687481
fourniey
Rendre au prochain
Posté le 17-02-2008 à 15:20:16  profilanswer
 

je ne suis pas assez famillier pour faire cela.
 
Je suis entrain d'étudier les listes déroulantes liées entre elles en ajax pour voir ce que je peux faire.

n°1687557
weed
Posté le 17-02-2008 à 20:56:30  profilanswer
 

fourniey a écrit :

je ne suis pas assez famillier pour faire cela.
 
Je suis entrain d'étudier les listes déroulantes liées entre elles en ajax pour voir ce que je peux faire.


 
Idéallement c'est bien sur de le faire en Ajax mais seulement dans un premier temps pour te simplifier la tache, il te suffit de submiter la page des qu'il y a un changement lorsque tu change ton premier select.
 
Donc pour reprendre mon exemple, dans la fonction select, tu fais un truc du genre :
 

<script>
function fsubmit ()
{
document.monformulaire.submit();
 
}
</script>


 
et par contre il te faut bien nommer ton formulaire par "monformulaire"
 
 

<form name="monformulaire">
 
//Tu mets tes selects entre les balises form
 
</form>


Message édité par weed le 17-02-2008 à 20:59:02
n°1687559
fourniey
Rendre au prochain
Posté le 17-02-2008 à 21:00:52  profilanswer
 

Je suis tout mêlé et ça ne fonctionne pas vraiment.

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4.  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.  <title>ATS-Liste</title>
  6.  <link href="http://www.ats3r.org/ats.css" rel="stylesheet" media="screen">
  7. </head>
  8. <body>
  9.  <div class="conteneur">
  10.  <div class="header"><p class="top"><a href="http://www.ats3r.org"><img src="../../site/images/accueil.gif" border="0" alt="Accueil"></img></a></p></div>
  11.  <div class="frame">
  12.  <?php
  13.   echo '<br><br><br><br><br><br><br><br>';
  14.   echo '<table align="center" border="15" bgcolor="#AC9F8C" width="40%">';
  15.   echo '<tr>';
  16.   echo '<th colspan="2"><h2>Liste disponible</h2></th>';
  17.   echo '</tr>';
  18.   // Sélection du statut
  19.   echo '<tr>';
  20.   echo '<th width="20%" align="right" height="35" cellpadding="5">Liste</th>';
  21.   echo '<td>';
  22.    $liste=$_POST['liste'];
  23.    require("../../config.inc.php" );
  24.    $requete1="SELECT distinct(type),TB_statut.description FROM `ATS_statut`
  25.         left join TB_statut on ATS_statut.type=TB_statut.code order by TB_statut.description";
  26.    $resultat1=mysql_query($requete1) or die ("Exécution de la requête impossible" );
  27.    echo '<form method="POST" action="">';
  28.    echo '<select name="liste" onchange="this.form.submit();">';
  29.    echo '<option></option>';
  30.     while($val=mysql_fetch_array($resultat1)) {
  31.      $selected="";
  32.      if($liste == $val["type"]) {$selected=" selected=\"selected\"";}
  33.       echo '<option value='.$val["type"].$selected.'>'.$val["description"].'</option>\n';
  34.     }
  35.     echo "</select>\n";
  36.    echo "</form>";
  37.  echo '</td></tr>';
  38.  echo '<form method="GET" action="l_voir.php">';
  39.  if (isset($_POST['liste'])) {
  40.   require("../../config.inc.php" );
  41.   $requete2="SELECT distinct(an) FROM `ATS_statut` WHERE type='$liste' order by an"; 
  42.   $resultat2=mysql_query($requete2) or die ("Exécution de la requête impossible" );
  43.  }
  44.  echo '<th align="right" height="35">Année</th>';
  45.  //Création d'un formulaire contentant une liste de sélection
  46.  echo '<td>';
  47.  echo '<select name="an">';
  48.   while($val=mysql_fetch_array($resultat2)) {
  49.    echo "<option value=>".$val["an"]."</option>\n";
  50.   }
  51.   echo "</select>\n";
  52.  echo '</td></tr>';
  53.  echo '<tr>';
  54.  echo '<th align="right" height="35">Type</th>';
  55.  echo '<td>';
  56.  echo '<select name="type">';
  57.  echo '<option value="liste_tel">Liste téléphonique</option>';
  58.  echo '<option value="Liste_adr">Liste d\'adresse</option>';
  59.  echo '</select>';
  60.  echo '</td>';
  61.  echo '</tr>';
  62.  echo '<tr>';
  63.  echo '<td colspan="2" align="center" height="40">';
  64.     //echo '<input type="hidden" name="liste" value='.$liste.'>';
  65.  //echo '<input type="hidden" name="annee" value='.$an.'>';
  66.  //echo '<input type="hidden" name="type" value='.$type.'>';  
  67.  echo '<input type="submit" value="Visualiser la liste"></td>';
  68.  echo '</tr>';
  69.  echo '</form>';
  70. echo '</table>';
  71. echo '</div>';
  72. echo '<div class="footer"></div>';
  73. echo '</div>';
  74. echo '</tr>';
  75. ?>
  76. </body>
  77. </html


Message édité par fourniey le 17-02-2008 à 21:01:22
n°1687563
weed
Posté le 17-02-2008 à 21:17:19  profilanswer
 

fourniey, tu n'as pas voulu m'ecouter et en faire qu'a ta tete ^^, je te conseillé de passer par une fonction javascript pour etre sur de la syntaxe et tu t'es planté :)
 
echo '<select name="liste" onchange="this.form.submit();">';
 
à remplacer par :
 
echo '<select name="liste" onChange="javascript:this.form.submit();" >';
 
J'ai trouvé ton erreur en faisant une recherche google sur l'expression : this.form.submit
Regarde le 2ème lien comme exemple :
http://www.google.fr/search?client [...] che+Google
 
essaie cela. Maintenant les valeurs doivent etre envoyé lorsque tu fais un changement de ton premier select ...

n°1687567
fourniey
Rendre au prochain
Posté le 17-02-2008 à 21:22:52  profilanswer
 

Ben non, je ne connais pas le javascript. Pour ça, je l'évite.
 
Le select de liste fonctionne très bien.


Message édité par fourniey le 17-02-2008 à 21:24:23
mood
Publicité
Posté le 17-02-2008 à 21:22:52  profilanswer
 

n°1687571
fourniey
Rendre au prochain
Posté le 17-02-2008 à 21:40:18  profilanswer
 

Au départ, j'ai essayé de le faire AJAX mais je n'y arrivais pas alors, j'ai essayé autre chose.
 
cette ligne n'Est pas exécutée: <select size="1" name="type" OnChange="sendData('id='+this.value,'lire_an.php')" onKeyUp="sendData('id='+this.value,'lire_an.php')">
 
 

Code :
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>ATS-Liste</title>
  5. <link href="http://www.ats3r.org/ats.css" rel="stylesheet" media="screen">
  6. <script type="text/javascript">
  7.  /** Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest */
  8.  function sendData(param, page)
  9.  {
  10.   if(document.all)
  11.   {
  12.    //Internet Explorer
  13.    var XhrObj = new ActiveXObject("Microsoft.XMLHTTP" ) ;
  14.   }//fin if
  15.   else
  16.   {
  17.       //Mozilla
  18.    var XhrObj = new XMLHttpRequest();
  19.   }//fin else
  20.   //définition de l'endroit d'affichage:
  21.   var content = document.getElementById("contenu" );
  22.   XhrObj.open("POST", page);
  23.   //Ok pour la page cible
  24.   XhrObj.onreadystatechange = function()
  25.   {
  26.    if (XhrObj.readyState == 4 && XhrObj.status == 200)
  27.     content.innerHTML = XhrObj.responseText ;
  28.   }
  29.   XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  30.   XhrObj.send(param);
  31.  }
  32.  //fin fonction SendData
  33. </script>
  34. </head>
  35. <body>
  36. <div class="conteneur">
  37. <div class="header"><p class="top"><a href="http://www.ats3r.org"><img src="../../site/images/accueil.gif" border="0" alt="Accueil"></img></a></p></div>
  38. <?php
  39. echo '<div class="frame">';
  40. echo '<form method="POST" action="ME_liste.php">';
  41. echo '<br><br><br><br><br><br><br><br>';
  42. echo '<table align="center" border="15" bgcolor="#AC9F8C" width="40%">';
  43. echo '<tr>';
  44. echo '<th colspan="2"><h2>Liste disponible</h2></th>';
  45. echo '</tr>';
  46. // Sélection du statut
  47. echo '<tr>';
  48. echo '<th width="20%" align="right" height="35">Liste</th>';
  49. echo '<td>';
  50.  $type=$_POST['type'];
  51.  require("../../config.inc.php" );
  52.  $r_type = "SELECT distinct(type),TB_statut.description FROM `ATS_statut`
  53.       left join TB_statut on ATS_statut.type=TB_statut.code order by TB_statut.description";
  54.  $res = mysql_query($r_type);
  55.  ?>
  56.  <select size="1" name="type" OnChange="sendData('id='+this.value,'lire_an.php')" onKeyUp="sendData('id='+this.value,'lire_an.php')">
  57.  <?php
  58.  while($val=mysql_fetch_array($res)) {
  59.   $selected="";
  60.   if($type == $val["type"]) {$selected=" selected=\"selected\"";}
  61.   echo '<option value='.$val["type"].$selected.'>'.$val["description"].'</option>\n';
  62.  }
  63.  echo '</select>';
  64. echo '</td>';
  65. echo '</tr>';
  66. //include_once('lire_an.php');  
  67. echo '<th align="right" height="35">Type</th>';
  68. echo '</tr>';
  69. echo '<tr>';
  70. echo '<th align="right" height="35">Tri</th>';
  71. echo '</tr>';
  72. echo '<tr>';
  73. echo '<td colspan="2" align="center" height="40"><input type="submit" value="Visualiser la liste"></td>';
  74. echo '</tr>';
  75. echo '</table>';
  76. echo '</form>';
  77. echo '</div>';
  78. echo '<div class="footer"></div>';
  79. echo '</div>';
  80. ?>
  81. </body>
  82. </html


Message édité par fourniey le 17-02-2008 à 21:41:11

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  rafraichissement d'un sélect

 

Sujets relatifs
Problème de rafraichissementRafraichissement de la page sur postback : vers une solution Ajax ?
Problème avec checkbox[RESOLU] Excel Macro : Sheet-Range.select avec ActiveX
Modification innerHTML d'un selectEnvoi de requête grâce à un select
[JS] REmplacer la valeur d'un form, select ou option dynamiquement[Struts]Probleme récupération de la valeur d'un html:select
Problème avec un select[PHP][DOM] balises select non envoyé au serveur
Plus de sujets relatifs à : rafraichissement d'un sélect


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR