2012-02-10 9 views
5

Come categorizzare l'articolo inviato al database SQL in modo che quando l'utente volesse pubblicare un articolo in una determinata categoria, viene fornito un menu a discesa per selezionare l'articolo da pubblicare in quella categoria. Il chi siamo, prodotti, e il supporto sono ad esempio delle categorieCome categorizzare l'articolo inviato al database SQL?

<form method="post" action="postArticle.php"> 
<p> 
    <select name="selectedOption"> 
     <optgroup label="About us"> 
      <option value="about">About us</option> 
     </optgroup> 

     <optgroup label="Products"> 
      <option value="foo">Foo</option> 
      <option value="oof">Oof</option> 
     </optgroup> 

     <optgroup label="Support"> 
      <option value="support">Support</option> 
     </optgroup> 
    </select> 
</p> 

risposta

0

la cosa migliore è di avere un tavolo Category che memorizza categorie disponibili. Quindi, utilizzando l'id di ogni riga, crea un campo category_id nella tabella degli articoli per contenere l'ID della categoria per ciascun articolo. Questa sarà la chiave esterna per la tabella delle categorie.

Avrete quindi le informazioni su quella categoria di articoli. Al contrario, è possibile selezionare tutti gli articoli di una determinata categoria.

1

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.

Problemi correlati