Garder en mémoire une liste déroulante

Garder en mémoire une liste déroulante - PHP - Programmation

Marsh Posté le 13-11-2013 à 21:57:27    

Bonjour à tous,
 
Je réalise une site de consultation d'articles d'une boutique de dépôt-vente.
Je dispose d'un CSV que j'ai importé avec phpmyadmin.
J'ai crée de 4 listes déroulantes pour trier les articles généré par une requête sql.
 
Mon problème c'est que quand je sélectionne la première déroulante, ça garde pas en mémoire la liste déroulante précédente.
 
J'ai essayé d'utiliser $_SESSION mais ça déconne. j'ai bien mis <?php session_start(); ?> au début de code.
J'ai trouvé des exemples mais je n'arrive pas à faire fonctionner correctement les sessions ça fait 2 jours que je suis dessus.
j'ai essayé un truc  :pt1cable:  
 
Voici mon code  

Code :
  1. /* Ma première liste déroulante */
  2.                                                       /* Si la variable seesion existe   */
  3.       if (isset($_SESSION['tri']))
  4.       {
  5.       $tri = ($_SESSION['tri']);
  6.       ?>
  7.       <table>
  8.       <form action='./home.php' method='POST' name='tri' id='tri'>
  9.       <tr>
  10.       <td></td>
  11.       <td><select name='tri' onchange="document.forms.tri.submit();">
  12.       <?php
  13.       {
  14.       echo"<option value='".$row[0]."'>".$trit."</option>";
  15.       }
  16.       ?>
  17.       </select></td>
  18.       </tr>
  19.       </form>
  20.       </table>
  21.                <?php
  22.                             }
  23.              
  24.                      else
  25.             /* Si la variable n’existe pas  j’exécute la requête pour faire la recherche dans ma liste déroulante */
  26.             {
  27.                             $req_liste = mysql_query("SELECT `COL 2` FROM `TABLE 22` GROUP BY `COL 2`;" )
  28.                             or die("Erreur de requete : $req_liste ".mysql_error());?>
  29.                             <table>
  30.                             <form action='./home.php' method='POST' name='tri' id='tri'>
  31.                              <tr>
  32.                       <td></td>
  33.                      <td><select name='tri' onchange="document.forms.tri.submit();">
  34.                       <option>Faites votre choix</option>
  35.                                <?php
  36.                       while ($row=mysql_fetch_array($req_liste))
  37.                      {
  38.                    nl2br(htmlentities(trim($row[0]))); /* j'utilise cette fonction pour les problèmes d'accents */
  39.                    echo"<option value='".$row[0]."'>".$row[0]." </option>";
  40.                       }
  41.                       ?>
  42.                       </select></td>
  43.                     </tr>
  44.                             </form>
  45.                             </table>
  46.                         <?php           
  47.                          /* Ma deuxième liste déroulante */
  48.                    }
  49.                       $_SESSION['tri'] = $tri = $_POST["tri"]; /* j'initialise la variable $_SESSION['tri'] */
  50.                       if(isset($_POST['tri'])) /* si la valeur existe  j'exécute ma deuxième liste déroulante  */
  51.                              {
  52.                              $req_liste = mysql_query("SELECT `COL 3`,`COL 2` FROM `TABLE 22` where `COL 2` ='".$tri."'GROUP BY `COL 3`;" )
  53.                              or die("Erreur de requete : $req_liste ".mysql_error());
  54.                              ?>
  55.                              <table>
  56.                              <form action='./home.php' method='POST' name='tri2' id='tri2'>
  57.                      <tr>
  58.                        <td></td>
  59.                        <td><select name='tri2' onchange="document.forms.tri2.submit();">
  60.                        <option>--</option>
  61.                                       <?php
  62.                        while ($row=mysql_fetch_array($req_liste))
  63.                              {
  64.                               nl2br(htmlentities(trim($row[0])));
  65.                               echo"<option value='".$row[0]."-".$row[1]."'> ".$row[0]." </option>";
  66.                               }
  67.                              ?>
  68.                    </select></td>
  69.                    </tr>
  70.                            </form>
  71.                            </table>


 
Si quelqu'un peut m'expliquer comment faire je serai ravit

Reply

Marsh Posté le 13-11-2013 à 21:57:27   

Reply

Marsh Posté le 14-11-2013 à 01:44:15    

Garder en mémoire la liste de quel côté ? Du côté du PC de l'utilisateur, ou du côté du serveur ?
 
Le code n'est pas facile à lire, non seulement parce qu'il est mal indenté, mais en plus parce que ce n'est pas comme ça qu'il faut écrire un programme en PHP.
Ici, on a une sorte de HMTL qui contient du PHP.
Alors qu'il faudrait mieux avoir du PHP qui génère une page HTML dynamiquement.
 
D'une manière générale, les listbox sont souvent traitées du côté du poste client avec du javascript, parce que c'est le plus simple.
Mais s'il faut utiliser des listbox ayant des contenus variables, alors on est obligé d'interroger le serveur, et cela se fait par la technique Ajax, car on ne va pas attendre que l'utilisateur ait appuyé sur le bouton de validation du formulaire pour modifier le contenu de la listbox, ce qui se produirait trop tardivement.

Reply

Marsh Posté le 14-11-2013 à 08:52:53    

merci de m'avoir répondu.
Je suis pas spécialiste du code j'apprends surtout ^^  
Déjà je vais ré-indenter mon code correctement pour que le PHP génère une page HTML dynamiquement.  
Je connais rien en Ajax, je vais chercher des exemples sur internet.
Merci du conseil


Message édité par chris2225 le 14-11-2013 à 08:53:08
Reply

Marsh Posté le 14-11-2013 à 09:46:32    

Comme le dit olivthill ton code n'est pas très lisible.
Après avoir survolé ton code tu cherches à générer un select dynamiquement selon le premier select?
Si c'est le cas il faut effectivement utiliser la combinaison Javascript - Ajax - JSON pour une meilleure interactivité et eviter de poster inutilement.

Reply

Sujets relatifs:

Leave a Replay

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