Tôi đang tạo tab "hoạt động gần đây" cho tiểu sử trên trang web của mình và tôi cũng sẽ có nhật ký cho người kiểm duyệt để xem mọi thứ xảy ra trên trang web. Điều này sẽ yêu cầu tạo nhật ký hoạt động của một số loại.Cách hiệu quả nhất để tạo nhật ký hoạt động
Tôi không biết điều gì sẽ tốt hơn. Tôi có 2 lựa chọn:
- Thực hiện một bảng gọi là "hoạt động" và sau đó mỗi khi ai đó không một cái gì đó, thêm một kỷ lục để nó với các loại hành động, người sử dụng id, timestamp vv
- Vấn đề : bảng có thể rất dài.
- Tham gia tất cả 3 bảng (câu hỏi, câu trả lời, answer_comments) và sau đó bằng cách nào đó hiển thị tất cả các bảng này trên trang theo thứ tự mà hành động đã được thực hiện.
- Vấn đề: này sẽ là vô cùng khó khăn bởi vì tôi không có đầu mối làm thế nào tôi có thể làm cho nó nói "John nhận xét về một câu trả lời về câu hỏi Tiêu đề Here" bằng cách chỉ tham gia 3 bảng.
Có ai biết cách đăng nhập hoạt động tốt hơn trong tình huống này không? Tôi đang sử dụng PHP và MySQL. Nếu điều này hoặc là quá hiệu quả hoặc khó tôi có lẽ sẽ chỉ cần quên tab Hoạt động gần đây trên hồ sơ nhưng tôi vẫn cần một nhật ký hoạt động cho người kiểm duyệt.
Dưới đây là một số SQL mà tôi bắt đầu làm cho phương án 2, nhưng điều này sẽ không hoạt động vì không có cách nào phát hiện cho dù hành động là một lời nhận xét, câu hỏi hoặc trả lời khi tôi vang các thông tin trong một vòng lặp while
:
SELECT q.*, a.*, ac.*
FROM questions q JOIN answers a ON a.questionid = q.qid
JOIN answer_comments ac ON c.answerid = a.ans_id
WHERE q.user = $userid
AND a.userid = $userid
AND ac.userid = $userid
ORDER BY q.created DESC, a.created DESC, ac.created DESC
Cảm ơn bạn đã giúp đỡ!
Xin lỗi, cái thứ hai thực sự là 'a.userid' (đó là lỗi đánh máy). Dù sao cảm ơn rất nhiều! Tôi sẽ thử điều này và nếu nó hoạt động, tôi sẽ chấp nhận câu trả lời của bạn: D Và cảm ơn vì cách xác định đó là bình luận, câu hỏi hay câu trả lời bởi vì tôi không bao giờ biết bạn có thể làm điều đó. – Nathan
Điều này khá nhiều công trình :) Tôi chỉ có một vấn đề nhỏ với tham gia bảng câu hỏi để có được thông tin câu hỏi để nó có thể được liên kết và các công cụ. Đây là SQL và PHP: http://screencast.com/t/EJgdGkMPBB Đối với một số lý do trên ý kiến nó có vẻ như vậy tbe hiển thị id câu hỏi như tiêu đề và sau đó cho câu trả lời nó không hiển thị tiêu đề ở tất cả: http: //screencast.com/t/qvDzliDs9U Tôi biết rằng một số nội dung không phải là '$ row ['qSlug']' và nội dung (đó là URL sên của tiêu đề) nhưng điều đó không ảnh hưởng đến những thứ khác. – Nathan
Tên của khóa kết hợp xuất phát từ ** đầu tiên ** 'SELECT'. Bạn nên chọn tất cả các cột chung trước ('id, created, q_id, q_title'), sau đó chọn các cột riêng biệt cuối cùng (' a.ans_id' và 'ac.id'). Đây không phải là lỗi - 'UNION' được thiết kế để chọn cùng một dữ liệu. Đối với tiêu đề trống, bạn đang sử dụng 'qTitle' thay vì' q_title'. – andrewtweber