Changer boutons radios en liste déroulante

Résolu
corentin.bc Messages postés 385 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
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. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
  2. corentin.bc Messages postés 385 Date d'inscription   Statut Membre Dernière intervention   8
     
    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. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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
  3. corentin.bc Messages postés 385 Date d'inscription   Statut Membre Dernière intervention   8
     
    Ç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. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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