Tworzę zakładkę "ostatnia aktywność" dla profili w mojej witrynie, a także mam dziennik dla moderatorów, aby zobaczyć wszystko, co dzieje się na stronie. To wymagałoby stworzenia jakiegoś dziennika aktywności.Najbardziej skuteczny sposób tworzenia dziennika aktywności
Po prostu nie wiem, co byłoby lepsze. Mam 2 opcje:
- Złóż tabelę o nazwie „aktywność”, a następnie za każdym razem ktoś coś robi, dodać rekord do niego z rodzaju działań, ID użytkownika, datownik, itp
- Problem : Stół może stać się bardzo długi.
- Dołącz do wszystkich 3 tabel (pytania, odpowiedzi, odpowiedzi), a następnie pokaż wszystkie na stronie w kolejności, w której zostały podjęte działania.
- Problem: to byłoby bardzo trudne, ponieważ nie mam pojęcia w jaki sposób mogę zrobić to powiedzieć „Jan skomentował odpowiedź na pytanie tytule Here” tylko przez łączenie 3 tabel.
Czy ktoś wie lepszego sposobu dokonywania dziennik aktywności w tej sytuacji? Używam PHP i MySQL. Jeśli jest to zbyt nieefektywne lub trudne, prawdopodobnie po prostu zapomnę o karcie Ostatnie działania w profilach, ale nadal potrzebuję dziennika aktywności dla moderatorów.
Oto niektóre SQL, że zacząłem robić dla opcji 2, ale to nie działa, ponieważ nie ma sposobu wykrywania, czy działanie jest komentarz, pytanie lub odpowiedzieć kiedy echo informacji w while
pętli:
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
Z góry dziękuję za pomoc!
Niestety, drugi powinien być rzeczywiście 'a.userid' (to był literówka). W każdym razie wielkie dzięki! Spróbuję tego i jeśli to zadziała, przyjmę twoją odpowiedź: D Dziękuję za ten sposób identyfikacji, czy to jest komentarz, pytanie, czy odpowiedź, ponieważ nigdy nie wiedziałem, że możesz to zrobić. – Nathan
To prawie działa :) Mam tylko mały problem z dołączeniem do tabeli pytań, aby uzyskać informacje o pytaniu, aby można było je połączyć i takie tam. Oto SQL i PHP: http://screencast.com/t/EJgdGkMPBB Z jakiegoś powodu w komentarzach wydaje się, że wyświetla się identyfikator pytania jako tytuł, a następnie w przypadku odpowiedzi w ogóle nie pokazuje tytułu: http: //screencast.com/t/qvDzliDs9U Jestem świadomy, że niektóre rzeczy nie są jeszcze takie jak '$ row ['qSlug']' i stuff (co jest odnośnikiem URL tytułu), ale to nie powinno mieć wpływu inne rzeczy. – Nathan
Nazwa klucza asocjacyjnego pochodzi od ** first ** 'SELECT'. Powinieneś najpierw wybrać wszystkie wspólne kolumny ('id, created, q_id, q_title'), a następnie wybrać odrębne kolumny jako ostatnie (' a.ans_id' i 'ac.id'). To nie jest wada - "UNION" jest przeznaczony do wybierania tych samych danych. Jeśli chodzi o pusty tytuł, używasz 'qTitle' zamiast' q_title'. – andrewtweber