2012-11-05 37 views
5

Ok, tôi khá chắc chắn tôi không phải là người đầu tiên chạy vào điều này, tôi chỉ không biết các từ phù hợp để tìm kiếm giải pháp. Hãy xem xét các bảng sau đây cơ sở dữ liệu (giản cho câu hỏi này):

database tables http://www.nth-root.nl/public/images/wolf/cat_attr.png

Như bạn có thể nhìn thấy trong hình, có một bảng mục chứa các loại sản phẩm và một bảng thuộc tính chứa các thuộc tính khác nhau. Ví dụ: Màu (cho quần áo), Dung lượng (đối với máy nghe nhạc mp3), v.v.

Bảng thứ ba, ở giữa hình ảnh, liên kết các thuộc tính với các danh mục.

Hiện tại trong chương trình phụ trợ, tôi có trang 'Chỉnh sửa danh mục' với biểu mẫu để chỉnh sửa (hoặc thêm) một danh mục. Trên cùng một trang, tôi muốn hiển thị danh sách các danh sách thả xuống để quản lý các thuộc tính nào được liên kết với danh mục sản phẩm hiện tại.

backend http://www.nth-root.nl/public/images/wolf-commerce/edit_category.png

Sử dụng jquery để thêm/xóa trình đơn thả xuống.

Vấn đề là: làm cách nào để thao tác dữ liệu trong bảng category_attribute, sử dụng dữ liệu $ _POST của biểu mẫu.

Giải pháp lười biếng sẽ (và vâng tôi đã làm điều này trong quá khứ):
1. Xóa tất cả các hàng hiện tại trong category_attribute cho thể loại nhất định
2. Sau đó chèn tất cả các thuộc tính được lựa chọn để category_attribute

Nhưng điều này không hiệu quả lắm, nó sẽ xóa và thêm lại tất cả các hàng ngay cả khi ai đó chỉ thay đổi tiêu đề của danh mục.

Vì vậy, tôi đang tìm một cách để làm chèn đúng, cập nhật và xóa bỏ:
1. Xóa các hàng không xuất hiện trong $ _POST (thả xuống đã được gỡ bỏ)
2. Cập nhật các các hàng được thay đổi (một tùy chọn khác từ trình đơn thả xuống đã được chọn)
3. Chèn các hàng mới (một danh sách thả xuống mới đã được thêm)

Tôi chỉ không chắc chắn cách thực hiện hoặc tìm ví dụ tốt. Nó có thể dễ dàng để làm với một số ajax nhưng tôi đang tìm một giải pháp đó là hoàn toàn php, so sánh các giá trị $ _POST với các giá trị trong cơ sở dữ liệu.

Nếu ai đó biết một bài viết tốt giải thích giải pháp tốt nhất (và hiệu quả nhất), hãy cho tôi biết, tôi sẽ rất biết ơn.

-edit-
Tôi đã bao gồm một số hình ảnh để làm rõ câu hỏi của mình, nhưng ngăn xếp ngăn xếp không bao gồm chúng vì danh tiếng của tôi quá thấp nên tôi hy vọng câu hỏi của tôi đủ rõ ràng không có hình ảnh.

-edit2- Bây giờ tôi có đủ danh tiếng, tôi đã thêm hình ảnh.

Cảm ơn trước,

Nic

+1

một số từ vựng bạn có thể đã bị thiếu cho google fu của mình. http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model – ficuscr

+1

Ngoài ra, bảng category_attribute của bạn được gọi là tham gia/junction/nhiều đến nhiều/bảng tổng hợp http://en.wikipedia.org/wiki/Junction_table –

+0

Bạn chèn các mục mới qua javascript? –

Trả lời

2

Insert và Update:
Bạn có thể chèn một đầu vào ẩn với các hồ sơ ID.
Những người mới sẽ đặt lại ID này, vì vậy bạn thực hiện thao tác chèn.
ID đã điền bạn thực hiện cập nhật. Nếu bạn chỉ muốn thực hiện cập nhật thực sự thay đổi các mục bạn có thể tạo một đầu vào ẩn "UPDATED" với giá trị "0". Qua javascript bạn có thể kiểm tra xem combo đã thay đổi chưa, sao cho đầu vào được đánh dấu là "1".

trừ:
Tương tự như vậy bạn có thể làm để loại trừ, tạo ra một đầu vào ẩn ghi hồ sơ đó phải được xóa khi người dùng nhấp chuột để loại bỏ.

Không biết đó có phải là cách thích hợp cho bạn hay không hoặc nếu bạn mong đợi một giải pháp thực tế hơn.

+0

Cảm ơn! Điều này chắc chắn sẽ giúp tôi bắt đầu. –

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