Changer boutons radios en liste déroulante

Résolu
Salut à toutes et tous,
sur la page d'options de mon site:
https://www.accessibiliteprogrammes.fr/settings.php
j'ai des boutons radios pour choisir le type de menu à utiliser.
j'aimerais que ce choix ce fasse plutôt via une liste déroulante.
Comment dois-je faire svp?
Merci.

--
Amicalement! Corentin.

3 réponses

  1. Modérateur
    Bonjour,

    En modifiant ton code source .....
    (et donc en utilisant, en html, la balise SELECT au lieu des INPUT radio )

    Mais là ... sans voir ton code ... impossible de t'aider.

    0
    1. Slt,
      voici mon code :

      <?php
      $log = '';
      if(isset($_GET['act']) and $_GET['act'] == 'form') {
      if(isset($_POST['menu']))
       setcookie('menu', $_POST['menu'], time() + 365*24*3600, null, null, false, true);
      if(isset($_POST['audio'])) {
       if($_POST['audio'] == 'on')
        setcookie('audio', '1', time() + 4*365.25*24*3600, null, null, false, true);
       else
        setcookie('audio', '0', time() + 4*365.25*24*3600, null, null, false, true);
      }
      else
       setcookie('audio', '0', time() + 4*365.25*24*3600, null, null, false, true);
       header('Location: /settings.php?act=ok#log');
      }
      if(isset($_GET['act']) and $_GET['act'] == 'ok')
       $log = 'ok';
      ?>
      
      
      <?php $titre="Paramètres du site"; ?>
      <!DOCTYPE HTML>
      <HTML lang="fr">
      <HEAD>
      <?php include "header.php"; ?>
      </HEAD>
      <BODY>
      <div id="container"><div id="header">
      <div id="logo"> <img src="images/ORDIVOX.BMP" alt="logo du site"/> </div>
      </div>
      <?php include "menu.php";
      if((isset($_COOKIE['audio']) and $_COOKIE['audio'] == "1") or !isset($_COOKIE['audio'])) { ?>
      <audio src="sons/settings.mp3" autoplay></audio>
      <?php } ?>
      <div id="body" role="main">
      <h1>Préférences</h1>
      <?php
      if($log != '') {
      ?>
      <p id="log">
      <?php
      if($log == 'ok')
       print('<strong>Les modification ont bien été prises en comptes.</strong>');
      ?>
      </p>
      <?php
      }
      ?>
      <p>
      Ici vous pouvez effectuer quelques réglages.<br />
      Les cookies doivent être autorisés pour que celà prenne effet.
      </p>
      <form action="?act=form" method="post">
      <p>Style du menu:</p>
      <input type="radio" name="menu" value="ulli" id="lp" <?php if (isset($_COOKIE['menu']) and $_COOKIE['menu'] == "ulli" or !isset($_COOKIE['menu'])) echo 'checked'; ?> /> <label for="lp">Liste à puces (version 1.0, 4.1 et 4.2 du site)</label><br />
      <input type="radio" name="menu" value="select" id="ld" <?php if((isset($_COOKIE['menu']) and $_COOKIE['menu'] == "select")) echo 'checked'; ?> /> <label for="ld">Liste déroulante (version 2.0, 3.0 et 4.0 du site)</label><br /> 
      <label for="f_audio">Jouer un son en ouvrant une page du site:</label>
      <input type="checkbox" id="f_audio" name="audio" <?php if((isset($_COOKIE['audio']) and $_COOKIE['audio'] == "1") or !isset($_COOKIE['audio'])) echo 'checked'; ?> /><br />
      <input type="submit" value="Enregistrer" />
      </form>
      
      <a href="#menusite">retour au menu du site</a>
      
      </div></div>
      <?php include "footer.inc.php";?>
      </BODY>
      </HTML> 
      


      Amicalement! Corentin.

      EDIT : Ajout des balises de code.
      0
      1. Modérateur
        Oui et ?
        Donc on est d'accord sur le fait que c'est cette partie :
        <input type="radio" name="menu" value="ulli" id="lp" <?php if (isset($_COOKIE['menu']) and $_COOKIE['menu'] == "ulli" or !isset($_COOKIE['menu'])) echo 'checked'; ?> /> <label for="lp">Liste à puces (version 1.0, 4.1 et 4.2 du site)</label><br />
        <input type="radio" name="menu" value="select" id="ld" <?php if((isset($_COOKIE['menu']) and $_COOKIE['menu'] == "select")) echo 'checked'; ?> /> <label for="ld">Liste déroulante (version 2.0, 3.0 et 4.0 du site)</label><br /> 
        <label for="f_audio">Jouer un son en ouvrant une page du site:</label>
        <input type="checkbox" id="f_audio" name="audio" <?php if((isset($_COOKIE['audio']) and $_COOKIE['audio'] == "1") or !isset($_COOKIE['audio'])) echo 'checked'; ?> /><br />
        
        

        Que tu veux transformer en liste déroulante ??

        Et donc :
        <?php
        //récupération PROPRE des variables AVANT de les utiliser
        $menu = isset($_COOKIE['menu']) ? $_COOKIE['menu'] : 'ulli';
        $audio = isset($_COOKIE['audio']) ? $_COOKIE['audio'] : 1;
        ?>
        
        <!-- Affichage liste déroulante -->
        <select name="menu">
         <option  value="ulli" id="lp" <?php if ($menu == "ulli" ) echo "selected='selected'"; ?> > 
           <label for="lp">Liste à puces (version 1.0, 4.1 et 4.2 du site)</label>
          </option>
         <option  value="select" id="ld" <?php if($menu == "select") echo "selected='selected'"; ?> > 
           <label for="ld">Liste déroulante (version 2.0, 3.0 et 4.0 du site)</label>
          </option>
        </select>
        
        <!-- Case à cocher -->
        <label for="f_audio">Jouer un son en ouvrant une page du site:</label>
        <?php
         $checked = $audio == "1" ? "checked = 'checked' " : "";
        ?>
        <input type="checkbox" id="f_audio" name="audio" <?php echo $checked; ?> /><br />
        
        
        0
    2. Ça fonctionne merveilleusement bien.
      Mais un truc me chagrine :
      le W3C me donne les erreurs suivantes que je n'avais pas avant :
      1.
      Error: Stray start tag label.
      From line 58, column 4; to line 58, column 19
      ed' > ↩ <label for="lp">Liste
      2.
      Error: Stray end tag label.
      From line 58, column 67; to line 58, column 74
      2 du site)</label>↩ </o
      3.
      Error: Stray start tag label.
      From line 61, column 4; to line 61, column 19
      d" > ↩ <label for="ld">Liste
      4.
      Error: Stray end tag label.
      From line 61, column 70; to line 61, column 77
      0 du site)</label>↩ </o
      comment les corriger?
      0
      1. Modérateur
        Ah oui...
        Vires tous les <label... > </label> presents dans les OPTIONS du select.
        ne conserve que les textes.

        <select name="menu">
         <option  value="ulli" id="lp" <?php if ($menu == "ulli" ) echo "selected='selected'"; ?> > 
            Liste à puces (version 1.0, 4.1 et 4.2 du site)  </option>
         <option  value="select" id="ld" <?php if($menu == "select") echo "selected='selected'"; ?> > 
          Liste déroulante (version 2.0, 3.0 et 4.0 du site)  </option>
        </select>
        
        0