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

  FORUM HardWare.fr
  Programmation
  PHP

  Garder en mémoire une liste déroulante

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Garder en mémoire une liste déroulante

n°2210218
chris2225
Posté le 13-11-2013 à 21:57:27  profilanswer
 

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

mood
Publicité
Posté le 13-11-2013 à 21:57:27  profilanswer
 

n°2210232
olivthill
Posté le 14-11-2013 à 01:44:15  profilanswer
 

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.

n°2210246
chris2225
Posté le 14-11-2013 à 08:52:53  profilanswer
 

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
n°2210250
deejay59
Posté le 14-11-2013 à 09:46:32  profilanswer
 

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.


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

  Garder en mémoire une liste déroulante

 

Sujets relatifs
afficher une adresse memoire sans printf[Résolu] Détecter le sens de parcours d'une liste de coordonnées
Afficher une Liste.allocation memoire dans une fonction
Problème Scrit qui liste les fichiers[Java] Liste chaînée - Pile
[PHP/JQuery] Liste déroulante suivit Autocompleterequète dans une liste déroulante
garder des données en mémoire dans une liste déroulante 
Plus de sujets relatifs à : Garder en mémoire une liste déroulante


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