A prima vista sembrerebbe che sia sufficiente una semplice tabella per implementare la struttura che consentirebbe di creare una matrice nidificata della struttura della categoria. Qualsiasi categoria con unè un optgroup
e quindi si elencano ciascuna sottocategoria come option
all'interno di ciascun genitore optgroup
.
category_id | parent_id | category_name
1 | 0 | About us
2 | 1 | About us
3 | 0 | Products
4 | 3 | foo
5 | 3 | oof
6 | 0 | Support
7 | 6 | Support
Questa uscita sarebbe come:
<form method="post" action="postArticle.php">
<p>
<select name="selectedOption">
<optgroup label="About us">
<option value="2">About us</option>
</optgroup>
<optgroup label="Products">
<option value="4">Foo</option>
<option value="5">Oof</option>
</optgroup>
<optgroup label="Support">
<option value="6">Support</option>
</optgroup>
</select>
</p>
È possibile, ovviamente, quindi memorizzare il valore della select nella tabella articolo per collegamento alla tabella categoria. Si noti che non è possibile selezionare le categorie padre in quanto sopra, solo le sottocategorie (che si potrebbe desiderare di essere il caso). Ovviamente se dovessi avere molti gruppi con una sola sottocategoria (che duplica il nome della categoria padre), allora questo non è molto efficiente e potresti voler vedere come stai strutturando le categorie, oppure potresti preferire di lasciar perdere il optgroup
insieme e solo visivamente indentare le etichette per le sottocategorie di ogni categoria. In questo modo tutte le categorie (compresi i genitori) diventano option
e sono selezionabili, cosa che potresti non volere.
fonte
2012-02-10 14:22:19