[RESOLU] Liste déroulante dynamique

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Liste déroulante dynamique

Re: Liste déroulante dynamique

par DimKlen » 04 nov. 2015, 17:12

Donc ce n'est pas possible. Je fais ceci dans le cadre de l'école et seulement du php est autorisé. Cette partie n'est pas réellement à faire, c'est juste histoire de faire des choses en plus. Pour le coup j'ai fais placé un bouton de validation qui me rafraîchit la page et qui affiche donc la 2eme liste déroulante. Merci pour votre aide !

Re: Liste déroulante dynamique

par or 1 » 04 nov. 2015, 16:09

"Je ne veux utiliser que du PHP et non AJAX ou JS"
donc non
ce serait bien plus pratique pour l'utilisateur de changer d'avis sur ce point.

Re: Liste déroulante dynamique

par DimKlen » 04 nov. 2015, 16:02

Je vois, est-il possible de faire sans bouton valider ? Par exemple faire en sorte que le l'option choisie joue le rôle de bouton valider ? Faire en sorte que lorsque je choisis une option, la deuxième liste apparaisse ?

Re: Liste déroulante dynamique

par or 1 » 04 nov. 2015, 15:56

if (isSet($_POST['objet'])) {
il faut donc valider une première fois le formulaire, et vu que dans le code donné, il n'y a pas de bouton pour le faire, ce n'est pas évident d'y arriver.

Re: Liste déroulante dynamique

par DimKlen » 04 nov. 2015, 15:30

Merci, je comprends très bien ton code ! et c'est exactement ce que je veux afficher. Cependant, la deuxième liste ne s'affiche pas, peu importe le choix de la première liste. D'où provient l'erreur ?

Re: Liste déroulante dynamique

par Ryle » 04 nov. 2015, 15:08

Bonjour,

Commence par écrire le code html que tu veux générer, puis ajoute tes contrôles en php pour en limiter l'affichage en fonction des paramètres souhaité :
<select name="objet" id="objet">
  <option value=""> ----- Choisir ----- </option>
  <option value="1">Utilisateur</option>
  <option value="2">Sujet</option>
  <option value="3">Message</option>
  <option value="4">Fichier</option>
</select>

<select name="id" id="id">
  <option value=""> ----- Choisir ----- </option>
  <option value="1">Le plus actif</option>
  <option value="2">Le moins actif</option>
  <option value="3">Le plus récent</option>
  <option value="4">Le plus ancien</option>
</select>
Puis on ajoute un test pour n'afficher le second select que si une valeur est retenue dans le premier :
<select name="objet" id="objet">
  <option value=""> ----- Choisir ----- </option>
  <option value="1">Utilisateur</option>
  <option value="2">Sujet</option>
  <option value="3">Message</option>
  <option value="4">Fichier</option>
</select>
<?php if (isSet($_POST['objet'])) { ?>
  <select name="id" id="id">
    <option value=""> ----- Choisir ----- </option>
    <option value="1">Le plus actif</option>
    <option value="2">Le moins actif</option>
    <option value="3">Le plus récent</option>
    <option value="4">Le plus ancien</option>
  </select>
<?php } ?>
Enfin on affiche les options en fonction de la valeur spécifiée :
<select name="objet" id="objet">
  <option value=""> ----- Choisir ----- </option>
  <option value="1">Utilisateur</option>
  <option value="2">Sujet</option>
  <option value="3">Message</option>
  <option value="4">Fichier</option>
</select>
<?php if (isSet($_POST['objet'])) { ?>
  <select name="id" id="id">
    <option value=""> ----- Choisir ----- </option>
    <?php if (['objet']==1) { ?>
      <option value="1">Le plus actif</option>
      <option value="2">Le moins actif</option>
    <?php } elseif (['objet']==2) { ?>
      <option value="3">Le plus récent</option>
      <option value="4">Le plus ancien</option>
    <?php } ?>
  </select>
<?php } ?>

Re: Liste déroulante dynamique

par DimKlen » 04 nov. 2015, 14:33

ça à l'air simple de ton côté :p mais pourrais tu me dire où est ce que je place ces <option> ?

Voici ce que j'ai essayé de faire

Code : Tout sélectionner

<Body> <form method="post" action="HistoR.php"> <fieldset> <legend>Moteur de recherche</legend> <!-- Titre du fieldset --> Objet <select name="objet" id="objet"> <option value=""> ----- Choisir ----- </option> <option value="1">Utilisateur</option> <option value="2">Sujet</option> <option value="3">Message</option> <option value="4">Fichier</option> </select> <select name="id" id="id"> <option value=""> ----- Choisir ----- </option> <option value="1"> <?php if (($_POST['objet'])==1) { echo 'Le plus actif'; } ?> </option> <option value="2">Sujet</option> <option value="3">Message</option> <option value="4">Fichier</option> </select> ?> </fieldset> </form> </Body>

Et voici mon erreur (il ne connait pas 'objet' apparamment) : Undefined index : objet in C:/......... on line 47

Re: Liste déroulante dynamique

par or 1 » 04 nov. 2015, 14:29

un autre <select><option></option><option></option><option></option></select>
avec des options qui change selon le if($choix==1){ echo '...'; }else if($choix==2){ echo '...'; }else if ...

Liste déroulante dynamique

par DimKlen » 04 nov. 2015, 14:21

Bonjour, je débute vraiment en php et j'aimerais solliciter votre aide concernant les liste déroulantes dynamiques en php.

Voici mon problème : je souhaite créer deux liste déroulantes qui sont liées entre elles. C'est-à-dire que le contenu de la deuxième liste déroulante dépendra du choix de la premier liste. Le contenu de ces listes ne dépend pas d'une base de données, ce sont simplement des chaines de caractères.

Code : Tout sélectionner

<Body> <form method="post" action="HistoR.php"> <fieldset> <legend>Moteur de recherche</legend> <!-- Titre du fieldset --> Objet <select name="objet" id="objet"> <option value=""> ----- Choisir ----- </option> <option value="1">Utilisateur</option> <option value="2">Sujet</option> <option value="3">Message</option> <option value="4">Fichier</option> </select> <?php if (isset($_POST['objet'])) { $choix = $_POST['objet']; if($choix==1) { } } ?> </fieldset> </form> </Body>
Enfaite je ne sais pas quoi mettre après ma balises php. Comment je fais pour afficher la deuxième liste déroulante en fonction de mon premier choix ? j'ai essayé certaine choses mais en vain. (Je ne veux utiliser que du PHP et non AJAX ou JS)

Merci