Ciao, è certamente buono il consiglio di filippo.toso.

Originariamente inviata da
patdepri
Ho già provato con vari tentativi, ma non ho avuto successo.
A parte il codice iniziale, hai provato a sviluppare qualcosa sulla base di quanto ti è stato indicato?
Potrebbe sempre essere utile mostrare ciò che hai fatto, anche se non funzionante. In tal modo si può verificare dove andare a correggere o come indirizzarti per portare avanti lo sviluppo.
Non vorrei dare la minestra pronta ma, non avendo possibilità di dedicarci troppo tempo per seguire lo sviluppo passo passo, posto direttamente una soluzione.
L'idea è quella di avere una funzione che vada a creare dinamicamente i blocchi <select> con le relative <option>. In questo modo puoi creare un ciclo, sfruttando magari un array con cui passare i relativi valori delle <option> e confrontarli col valore letto in modo da attribuire l'attributo "selected" alla corrispondente <option> (come ti è stato consigliato).
Puoi inserire questa funzione nel tuo PHP:
Codice PHP:
// Costruisce e visualizza un elemento <select> con relative <option> secondo i parametri specificati
function creaElementoSelect($id, $arrOption, $selectedValue){
// $id : valore degli attributi "id" e "name" da applicare a <select>
// $arrOption : array valori da attribuire alle <option> come attributo "value" e come contenuto testuale
// $selectedValue : valore per il quale viene applicato l'attributo "selected" alla <option> corrispondente
//
// Ciclo l'array e ottengo il blocco delle <option>
$options = array_reduce($arrOption, function ($accumulator, $currentValue) use ($selectedValue) {
$selected = $currentValue == $selectedValue ? " selected" : "";
return $accumulator."<option value=\"$currentValue\"$selected>$currentValue</option>";
}, "");
// Visualizzo <select> e <option>
echo "<select id=\"$id\" name=\"$id\" class=\"text\">$options</select>";
}
Considera che dovrai inserirla in un punto in cui è sempre vista, cioè NON dentro le condizioni in cui è avvenuto o meno qualche submit. Puoi inserirla ad esempio alla fine dell'intero blocco PHP iniziale.
Nota inoltre che verrà sempre applicato al <select> quel class="text". Nel tuo codice vedo che questo non lo hai applicato per il primo <select>, per cui potresti eventualmente definire un ulteriore argomento nella funzione, così da stabilire quando applicare quella classe. Valuta tu.
A questo punto dovrai rimuovere, all'interno del codice HTML, i <select> e relative <option> per sostituirli con una riga PHP in cui vai a richiamare la funzione passando la relativa lista di valori.
Qui un esempio per il primo elemento <select>:
Codice PHP:
...
<td>Input time</td>
<td>
<label for="lunedi_1">Lunedì dalle</label>
<?php creaElementoSelect("lun_1", ["09:00", "09:30", "10:00", "10:30", "11:00"], $lun_1); ?>
</td>
...
Qui non faccio altro che richiamare la funzione passando i parametri relativi al select che si vuole creare. Per tutti i <select> dovrai quindi richiamare questa stessa funzione con i corrispettivi parametri.
I commenti nel codice della funzione mi sembrano abbastanza chiari ma se hai dubbi chiedi pure.
Prova è fai sapere.