Liste déroulante

Liste déroulante - PHP - Programmation

Marsh Posté le 22-12-2007 à 02:14:33    

Bonjour,
 
Mes deux listes déroulantes n'affichent pas le choix de l'usager. Pour l'affichage, tout est ok!
 
 
Aussi, comment puis-je mettre à jour la 2e liste selon le choix de la première liste ?
 
Merci!
 

Code :
  1. <?php
  2. $an = $_POST['an'];
  3. $liste = $_POST['liste'];
  4. ?>
  5.   <div class="conteneur">
  6.     <div class="header"><p class="top"><a href="http://www.ats3r.org"><img src="site/images/accueil.gif" border="0" alt="ATS"> </img></a></p>
  7.     </div>
  8.       <div class="framebloc">
  9.    <?php
  10.         echo '<FORM action="ca2.php" METHOD="POST">';
  11.         echo '<table align="center" border=3">';
  12.         echo '<tr>';
  13.    echo '<th>Liste disponible</th>';
  14.    echo '<th>Année</th>';
  15.    echo '<th>Action</th>';
  16.    echo '</tr>';
  17.    require("config.inc.php" );
  18.    $r_liste = "SELECT code,description FROM TB_statut where web_site='O' order by description";
  19.         $d_liste = mysql_query($r_liste);
  20.         echo '<tr>';
  21.    echo '<td valign="center">';
  22.         echo '<select name="liste">';
  23.         while($ch_liste=mysql_fetch_array($d_liste)) {
  24.           echo '<option value="'.$ch_liste["code"].'" '.selected.'>'.$ch_liste["description"].'</option>\n';
  25.       }
  26.         echo '</select>';
  27.         echo '</td>';
  28.    $r_an = "SELECT distinct an FROM ATS_statut where type='$liste' order by an desc";
  29.    $d_an = mysql_query($r_an);
  30.    echo '<td valign="center">';
  31.    echo '<select name="an">';
  32.    while($ch_an=mysql_fetch_array($d_an)) {
  33.           echo '<option value="'.$ch_an["an"].'" '.selected.'>'.$ch_an["an"].'</option>\n';
  34.       }
  35.    echo '</select>';
  36.    echo '</td>';
  37.    echo '<td valign="center">';
  38.    echo '<INPUT TYPE="submit" VALUE="Visualiser">';
  39.    echo '</FORM>';
  40.    echo '</td>';
  41.    echo '</tr>';

Reply

Marsh Posté le 22-12-2007 à 02:14:33   

Reply

Marsh Posté le 22-12-2007 à 02:58:33    

Je t'ai pas déjà dit de séparer ton html du php :??: La c'est ilisible pour moi à cette heure, j'ai même pas envie de chercher non plus de quoi tu parles exactement.
 
Et les echo à chaque ligne, cf 1re remarque.
 
Pour faire bouger les listes en fonction du choix d'une autre, faut soit recharger la page (valider le formulaire sur onChange par exemple) soit utiliser de l'ajax (enfin du JS asynchrone) :)

Reply

Marsh Posté le 22-12-2007 à 03:14:20    

J'essaie de suivre, toi tu me dis de séparer html et ici même, on m'a déjà dit de tout mettre en php avec des echo.

Reply

Marsh Posté le 22-12-2007 à 03:20:13    

Faut pas tomber dans l'excès d'ouvrir et fermer des balises php partout non plus c'est pas mieux.
 
Au moins tout le html qui est avant et après sort le parce que j'imagine qu'il y a autre chose genre entête et pied de page :) Et après fais tout en un coup fais pas 5 lignes de echo, fait en un seul ;)
 
Je pense personnellement qu'il est plus intéressant d'utiliser une variable que tu remplies au fur et à mesure et que tu balances à la fin. Ou au moins d'activer le tampon de sortie pour pas balancer du code foireux si y'a une erreur en cours de traitement ;)

Reply

Marsh Posté le 22-12-2007 à 03:22:43    

SI t'as 3 lignes de html pour tout le reste de php fais tout en php.
Si c'est l'inverse fait le en html et ouvre tes balises quand il faut même si ça doit être à 3 endroits.
 
Tout est question d'équilibre et de lisibilité. En l'occurence c'est illisible ton truc et pas que pour la manière de gérer la sortie :whistle:

Reply

Marsh Posté le 22-12-2007 à 03:28:56    

Est-ce que je suis dans la bonne voie ?
 

Code :
  1. <?php
  2. $an = $_POST['an'];
  3. $liste = $_POST['liste'];
  4. ?>
  5.   <div class="conteneur">
  6.     <div class="header"><p class="top"><a href="http://www.ats3r.org"><img src="site/images/accueil.gif" border="0" alt="ATS"> </img></a></p>
  7.     </div>
  8.       <div class="framebloc">
  9.         <FORM action="ca2.php" METHOD="POST">
  10.         <table align="center" border=3">
  11.         <tr>
  12.    <th>Liste disponible</th>
  13.    <th>Année</th>
  14.    <th>Action</th>
  15.    </tr>
  16.    <?php
  17.    require("config.inc.php" );
  18.    $r_liste = "SELECT code,description FROM TB_statut where web_site='O' order by description";
  19.         $d_liste = mysql_query($r_liste);
  20.         echo '<tr>';
  21.    echo '<td valign="center">';
  22.         echo '<select name="liste">';
  23.         while($ch_liste=mysql_fetch_array($d_liste)) {
  24.           echo '<option value="'.$ch_liste["code"].'" '.selected.'>'.$ch_liste["description"].'</option>\n';
  25.       }
  26.         echo '</select>';
  27.         echo '</td>';
  28. echo $liste;
  29.    if(isset($_POST['an'])) {
  30.     $r_an = "SELECT distinct an FROM ATS_statut where type='$liste' order by an desc";
  31.    }
  32.    else  {
  33.     $r_an = "SELECT distinct an FROM ATS_statut where type='CA' order by an desc";
  34.    }
  35.    $d_an = mysql_query($r_an);
  36.    echo '<td valign="center">';
  37.    echo '<select name="an">';
  38.    while($ch_an=mysql_fetch_array($d_an)) {
  39.           echo '<option value="'.$ch_an["an"].'" '.selected.'>'.$ch_an["an"].'</option>\n';
  40.       }
  41.    ?>
  42.    </select>
  43.    </td>
  44.    <td valign="center">
  45.    <INPUT TYPE="submit" VALUE="Visualiser">
  46.    </FORM>
  47.    </td>
  48.    </tr>


Message édité par fourniey le 22-12-2007 à 03:29:41
Reply

Marsh Posté le 22-12-2007 à 03:50:17    

Ton premier passage php pourquoi ne pas l'inclure plus bas là où ça commence vraiment :??:
 
Ensuite, un echo pour plusieurs lignes c'est possible

Code :
  1. echo "c'est le début,
  2. blabla
  3. blabla
  4. c'est la fin."


Dans la continuité, la gestion des retours (\n) ne marchera que dans des guillemets doubles, en quillemets simple il devrait te l'afficher
Passe tout ton code html en minuscule dans un soucis d'homogénéité et de logique.
 
Sans repartir dans un débat long et inutile à chaque fois, pourquoi utiliser des " où le contenu sera évalué alors que y'a pas de contenu à évaluer et où ' irait tout aussi bien :??: (je parle du php, laisse les " pour le html)
 
Indente correctement ton code html ça facilite énormément la lecture ;)

Reply

Marsh Posté le 25-12-2007 à 17:12:13    

var_dump($d_an);  ?


---------------
www.kobhqlt.no-ip.fr
Reply

Marsh Posté le 25-12-2007 à 18:29:49    

Je suis entrain de regarder pour utiliser ajax.

Reply

Marsh Posté le 26-12-2007 à 09:47:03    

Ca va t'obliger d'autant plus à bien séparer la présentation du code métier ;)

Reply

Sujets relatifs:

Leave a Replay

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