2012-02-10 16 views
5

sql veritabanına gönderilen makaleyi nasıl kategorilere ayırabilirim, böylece kullanıcı belirli bir kategoriye bir makale göndermek istediğinde, o kategoride hangi makaleyi yayınlayacağını seçmek için bir açılır menü verilir. Bizim, ürünler ve destek hakkındasql veritabanına gönderilen makaleyi nasıl sınıflarım?

<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> 

cevap

0

Yapabileceğiniz en iyi şey olduğunu saklar mevcut kategoriler Category tablo sahip olmaktır kategorilerin örnektir. Daha sonra, her bir satırın kimliğini kullanarak, her makalenin kategori kimliğini tutmak için makale tablosunda bir category_id alanı oluşturun. Bu kategori tablosuna yabancı anahtar olacaktır.

Daha sonra bu makaleler kategorisi hakkında bilgi sahibi olacaksınız. Tersine, belirli bir kategoriden tüm makaleleri seçebilirsiniz.

1

İlk bakışta, kategori yapısının iç içe geçmiş bir dizisini oluşturmanıza izin veren yapıyı uygulamak için basit bir tabloya ihtiyacınız olduğu anlaşılıyor. parent_id == 0 ile herhangi bir kategori optgroup olup her alt kategoriyi option her üst öğe için optgroup içinde listeleyebilirsiniz. olarak

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 

Bu olurdu çıkışı: Açıkçası o makale tabloda select değeri saklayabilir

<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> 

kategori tablosuna bağlamak için. Yukarıdaki ana kategorileri seçemeyeceğinizi, sadece alt kategorileri (durumda olmak isteyebilirsiniz) seçemeyeceğinizi unutmayın. Açıkçası, sadece bir alt kategorisi olan (üst kategori ismini çoğaltan) çok sayıda gruba sahip olsaydınız, o zaman bu çok verimli değildir ve kategorilerinizi nasıl yapılandırdığınızı incelemek isteyebilirsiniz ya da bunun yerine düşmek isteyebilirsiniz. optgroup tamamen ve her kategorinin altındaki alt kategorilere ait etiketleri görsel olarak belirtiniz. Bu şekilde, her kategori (ebeveynler de dahil) option haline gelir ve seçilemez, ancak bunlar seçilebilir.

İlgili konular