Lo scenario è uno dei più classici: abbiamo una select che rappresenta le sezioni e una che rappresenta le categorie che è collegata alla prima.
Nel db avremo una cosa del genere:
- tabella sezioni
- tabella categorie
- categoria_id
- categoria_nome
- sezione_FK (foreign key che la collega alle sezioni)
Quindi la select con le categoiei si riempie solo con quelle che corrispondo a una deternimata sezione.
Solo con il PHP questo non è possibile; ci vuole un pò di Javascript e AJAX.
Prima di tutto riempiamo la prima select:
function selectSection() {
global $config;
try {
$result = $config->getPdo()->query("SELECT * FROM sezioni ORDER BY sezione_nome");
return $result;
} catch (Exception $e) {
die($e->getMessage());
}
}
<td>Sezione:</td>
<td>
<select name="sezione" onchange="changeSelect(this.value);" id="sezione">
<option value="*">*</option>
<?php
foreach (selectSection () as $rowSection) {
echo "<option value='" . $rowSection['sezione_id'] . "'>" . $rowSection['sezione_nome'] . "</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td>Categoria:</td>
<td>
<select name="categoria" id="categoria">
<option value='*'>*</option>
</select>
</td>
</tr>
Io uso PDO per la connessione, ma non cambia nulla.
Ora come ora viene riempita solo la select sezione, che richiama anche una funzione Javascript che ancora dobbiamo mettere su.
La select categoria ha solo un * tanto per renderla presentabile.