[PHP] Select con opzioni dipendenti da un'altra select

GiovannySorr

Nuovo Utente
23 Mag 2019
3
0
1
Salve, sono nuovo sia nel forum che nel "Fare Web".
Premetto che ho letto gli altri articoli simili al mio (quello quasi identico è uno del 2011) e non ci sono state risposte.
In breve, dovrei andare a creare una select i cui campi dipendano da un altra select.
Un po' come quando ci si registra su un sito web e in base alla regione scelta ti permette di scegliere la provincia.
Non so proprio come fare a richiamare i valori della prima select (l'option scelta) per andare a crearmi la seconda, per come continuare la scrittura del codice ho già pensato a varie soluzioni e penso possano funzionare.
Ho provato a trasmettere l'opzione scelta attraverso le costanti php, gli array.. ma non riesco.
Inserisco dei segmenti di codice provati che magari possono aiutare a farvi capire cosa voglio fare, non inserisco per intero per non annoiarvi.
Grazie mille anche solo per aver letto fin qui.

Esempio costanti PHP:

PHP:
define ("italiano", "italiano");
define ("storia", "storia");

Prova Array:


PHP:
$materie=array("italiano","storia","matematica","informatica","sistemi","gpoi","tpsi");
// Per poi provare ad usare il ciclo ForEach
foreach($materie as $materia) {
echo "<option value='$materia'> $materia </option>";
}
// E uno "Switch"
switch ("$materia"){
    case "Italiano":
    echo' <option value="Questione Meridionale"> Questione Meridionale </option>
<option value="Prima Guerra Mondiale"> Prima Guerra Mondiale </option> ';

// ect..


Potreste aiutarmi in qualche modo? Grazie mille.

Di seguito il codice della prima select:

HTML:
<form method="POST" action="boh.php">
        <p align='center'>
        Scegli la materia che ti interessa  dalla lista
        </p>

        <p align='center'>
        <select name="materia">
        <option value='vuoto'> Materia </option>
        <option value="Italiano"> Italiano </option>
        <option value="Storia"> Storia </option>
        <option value="Sistemi"> Sistemi </option>
        <option value="Informatica"> Informatica </option>
        <option value="Tpsi"> Tpsi </option>
        <option value="Gpoi"> Gpoi </option>
        </select>

Adesso, in base a questa select dovrei andare a crearmi la seconda, con valori variabili in base alla materia selezionata.
Un esempio potrebbe essere (Questa select è costante, ma dovrebbe essere variabile in base al valore scelto nella prima select):

HTML:
<select name="argomento">
<option value='vuoto'> Argomento </option>
<option value="Questione Meridionale"> Questione Meridionale </option>
<option value="Prima Guerra Mondiale"> Prima Guerra Mondiale </option>
<option value="Dittature del 900"> Dittature del 900 </option>
<option value="Seconda Guerra Mondiale"> Seconda Guerra Mondiale </option>
<option value="Guerra Fredda"> Guerra Fredda </option>
</select>
 
Dovresti utilizzare ajax se vuoi farlo attraverso chiamate asincrone senza ricaricare la pagina, in alternativa fai degli step per poter procedere..
Spiego meglio:
Step1-
Form generale Get/Post
Step 2
Prelevo i dati dello step1 ed elaboro l'utput
Step3 - puoi finire allo step 2
Invio tutti i dati
___________
più in generale:
Step1 -> pagina.php
selezione i dati e premo avanti
Step 2 (caso get)-> pagina.php?mio_parametro=2
effettuo il rendering della seconda select valorizzando il necessario con "mio_parametro "

Step 3 (non necessario si potrebbe finire allo step2) invio tutti i dati.

In ajax esce un pò più elegante, ma forse non è questo il luogo per parlare di JS.
 
  • Like
Reactions: GiovannySorr
Dovresti utilizzare ajax se vuoi farlo attraverso chiamate asincrone senza ricaricare la pagina, in alternativa fai degli step per poter procedere..
Credo di aver capito, vado subito a provare.
Invierò un altro messaggio per farti/farvi sapere com'è andata a finire (Casomai ti ritrovi di nuovo sulla discussione quando hai tempo da perdere).
Grazie mille
 
Dovresti utilizzare ajax se vuoi farlo attraverso chiamate asincrone senza ricaricare la pagina, in alternativa fai degli step per poter procedere..
Spiego meglio:
Step1-
Form generale Get/Post
Step 2
Prelevo i dati dello step1 ed elaboro l'utput
Step3 - puoi finire allo step 2
Invio tutti i dati
___________
più in generale:
Step1 -> pagina.php
selezione i dati e premo avanti
Step 2 (caso get)-> pagina.php?mio_parametro=2
effettuo il rendering della seconda select valorizzando il necessario con "mio_parametro "

Step 3 (non necessario si potrebbe finire allo step2) invio tutti i dati.

In ajax esce un pò più elegante, ma forse non è questo il luogo per parlare di JS.
Risolto in questo modo alla fine, Grazie Mille <3
 

Discussioni simili