cambio menu a tendina e valore id [PHP/JS]

Salve, non so come si dice ma voglio fare che quando io seleziono una voce nel menu a tendina nell'auto cambio

nella barra degli indirizzi mi dovrebbe venire fuori

http://localhost/test/articoli.php?catID=1

http://localhost/test/articoli.php?catID=2

http://localhost/test/articoli.php?catID=3

etc.

e il menu e composto cosi:

<select>

<option>Animali</option>

<option>Gatti</option>

<option>Volatili</option>

</select>

so che era una funzione sola ..ma non me la ricordo.

Mi dite come era?

grazie mille.

inviato 5 anni fa
luigi
X 0 X

Devi fare un redirect con javascript, usi un framework javascript?

Con jQuery, per esempio, diventa molto semplice.

risposto 5 anni fa
Mario Santagiuliana
X 0 X

Molto semplicemente, senza framework o varie, basta usare l'evento onchange e un semplice codice js tanto grezzo quanto retrocompatibile:

<select onchange="if (this.value != 0) self.location.href='http://localhost/test/articoli.php?catID=' + this.value;">
<option value="0">Scegli Categoria..</option>
<option value="1">Animali</option>
<option value="1">Gatti</option>
<option value="1">Volatili</option>
</select>

Hai solo bisogno di impostare l'id corrispettivo alla categoria che vuoi listare come attributo value nei tag option elencati.

risposto 5 anni fa
s.rotondo
X 0 X

Molto semplicemente, senza framework o varie, basta usare l'evento onchange e un semplice codice js tanto grezzo quanto retrocompatibile:

<select onchange="if (this.value != 0) self.location.href='http://localhost/test/articoli.php?catID=' + this.value;">
<option value="0">Scegli Categoria..</option>
<option value="1">Animali</option>
<option value="1">Gatti</option>
<option value="1">Volatili</option>
</select>

Hai solo bisogno di impostare l'id corrispettivo alla categoria che vuoi listare come attributo value nei tag option elencati.

E se l'utente non ha javascript attivo?  :'(

risposto 5 anni fa
Massimiliano Arione
X 0 X

Beh, volendo potevi completare la mia risposta, non è difficile creare un metodo accessibile anche in assenza di js abilitati.

La mia replica era prevalentemente per MarioS che suggeriva l'utilizzo di un framework quando per una cosa del genere (almeno, solo questa), è usato un po a sproposito IMHO.

Ad ogni modo, si crea un form col method get e nel noscript si infila il bottone per inviare il modulo ed in assenza di javascript esso è perfettamente usabile ;-)

risposto 5 anni fa
s.rotondo
modificato 5 anni fa
X 0 X

Ma perché scrivere ancora javascript quando con un framework si fa prima?

Io sinceramente non ho nemmeno voglia di scriverlo in javascript, perché è più verboso, meno testato, meno cross-browser e quindi alla fine meno manutenibile.

Comunque la soluzione esatta non è usare noscript (ma siamo negli anni '90?), bensì sfruttare gli eventi (anche qui non servirebbe un framework, ma con un framework fai prima e meglio)

risposto 5 anni fa
Massimiliano Arione
X 0 X

No non siamo negli anni 90, il noscript è presente anche nelle specifiche di html5.

Comunque non so, forse sarò io che vedo male la questione, ma usare un framework per eseguire una semplice dichiarazione mi sembra semplicemente un abuso insensato di risorse, in questo caso del client, che deve caricare una libreria intera per permettere al sito di fare una cosa che, anche usando javascript, si traduce in non più di 20 caratteri.

Il web non è soltanto dei PC che montano core i-series ma anche dei cellulari e di apparecchi che non hanno spesso risorse da sprecare.. per questo mi sembra un po troppo estremizzata la tua soluzione in merito ad un problema che per essere risolto non richiede il kit della polizia scientifica, ma una banale striscia di nastro adesivo.

Comunque, ripeto, è un opinione mia.

risposto 5 anni fa
s.rotondo
X 0 X

Il fatto che sia in html5 non vuol dire che sia buono (e infatti in xhtml non c'è)

Una libreria come jQuery pesa la bellezza di 19K, spero che anche il tuo telefonino degli anni '90 ce la possa fare  :P

Tra l'altro, se richiamata da un CDN, ci sono buone probabilità che il browser l'abbia già in cache,

risposto 5 anni fa
Massimiliano Arione
X 0 X

scusate ma non ho potuto rispondere prima...

e scusate se il codice qui sotto non centra nulla di quello sopra...

ma la cosa è la stessa.

in questo modo è più semplice:

<?php echo "<select onchange=\"document.location.href = '" . $_SERVER['PHP_SELF'] . "?id=' + this.value;\" name=\"utenti\">";?>
   <option value="0">Seleziona Utente</option>
   <?php
   $result = $db->query("SELECT * FROM utenti WHERE user_level=1 or user_level=2");
   
   while($row = $result->fetch_array())
   {
   $nome= $row['user'];
   $id = $row['id'];
  ?>
        <option value="<?php echo $id; ?>"><?php echo $nome; ?></option>
        <?php
  }

?>
      </select>
risposto 5 anni fa
luigi
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda