Menu a tendina:

ciao ragazzi, ho un menu a tendina cosi:

<select name="categoria" id="categoria" onchange="this.form.submit()";>

<option selected>All</option>

<option>Italia</option>

<option>Germania</option>

<option>Francia</option>

<option>Inghilterra</option>

ecc.............................

</select>

Il mio problema è questo:

Se io sono nella categoria italia deve diventare: <option selected>Italia</option>

E lo risolvo facendo: <option selected>$_GET[categoria]</option>

Il problema è che a questo punto sarebbe cosi il codice:

<option selected>Italia </option>

<option>Italia </option>

<option>Germania</option>

<option>Francia</option>

<option>Inghilterra</option>

Come faccio ad evitare che l'opzione italia venga visualizzate due volte?

inviato 9 anni fa
pazzomania
X 0 X

Devi generare la tendina dinamicamente con php e fare un controllo con $_GET[categoria] per metterci selected.

risposto 9 anni fa
LonelyWolf
X 0 X

io faccio così

<?php
   $id=$_REQUEST['id'];
   if ($id)
     $nazione = $_POST['categoria'];
   $nazioni = array('Italia', 'Germania', 'Francia', Inghilterra');
   
  function select($nazioni, $nazione) {
     $select = "<select name=\"categoria\" onchange=\"this.form.submit\">";
     for ($i=0; $i<count($nazioni); $i++)
         $select .= "<option value=\"$i\"".selected($i,  $nazione).">".$nazioni[$i]."</option>";
     $select .= "</select>";
     return $select;
  }

  selected($val1, $val2) {
    if (trim($val1)==trim($val2)
      $sel = " selected=\"selected\"";
    else
      $sel = "";
    return $sel;
  }
  }
?>
<html>
<head><title>Nome pagina: TEST.PHP</title></head>
<body>
  <form id="test" action="test.php?id=1" method="post">
    <?=select($nazioni, $nazione)?> 
  </form>
</body>
<html>

se lanci l'esempio e scegli una nazione, vedrai che il select è posizionato correttamente sull'opzione scelta!

risposto 9 anni fa
emulman
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda