2012-02-10 30 views
5

Làm cách nào để phân loại bài viết được gửi tới cơ sở dữ liệu sql để khi người dùng muốn đăng bài viết lên một danh mục nhất định, họ được cung cấp một menu thả xuống để chọn bài viết để xuất bản trong danh mục đó. Về chúng tôi, sản phẩm và hỗ trợ là ví dụ về các loạiLàm cách nào để phân loại bài viết được gửi tới cơ sở dữ liệu 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> 

Trả lời

0

Đặt cược tốt nhất của bạn là có một danh mục có sẵn. Sau đó, sử dụng id của mỗi hàng, tạo trường category_id trong bảng bài viết để giữ id danh mục cho mỗi bài viết. Đây sẽ là khóa ngoài cho bảng danh mục.

Sau đó, bạn sẽ có thông tin về danh mục bài viết đó. Ngược lại, bạn có thể chọn tất cả các bài viết từ một thể loại nhất định.

1

Trong giao diện đầu tiên, có vẻ như bạn chỉ cần một bảng đơn giản để triển khai cấu trúc cho phép bạn tạo một mảng lồng nhau của cấu trúc danh mục. Bất kỳ danh mục nào có số parent_id == 0optgroup và sau đó bạn sẽ liệt kê từng danh mục con dưới dạng option trong mỗi phụ huynh 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 

sẽ là sản lượng này như:

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

Bạn rõ ràng là có thể sau đó lưu trữ các giá trị từ chọn trong bảng bài viết liên kết đến bảng category. Lưu ý rằng bạn không thể chọn danh mục gốc ở trên, chỉ có các danh mục phụ (mà bạn có thể muốn là trường hợp này). Rõ ràng nếu bạn có nhiều nhóm chỉ có một danh mục phụ (trùng lặp tên danh mục gốc) thì điều này không hiệu quả lắm và bạn có thể muốn xem cách bạn đang cấu trúc danh mục của mình hoặc thay vào đó bạn có thể muốn bỏ các optgroup hoàn toàn và chỉ thụt lề trực quan nhãn cho các danh mục con trong mỗi danh mục. Bằng cách đó, mọi thể loại (bao gồm cả cha mẹ) sẽ trở thành một option và có thể lựa chọn, mà bạn có thể không muốn.

Các vấn đề liên quan