Sto creando una scheda "attività recenti" sui profili del mio sito e avrò anche un registro per i moderatori per vedere tutto ciò che accade sul sito. Ciò richiederebbe un registro delle attività di qualche tipo.Il modo più efficiente per creare un registro delle attività
Solo non so cosa sarebbe meglio. Ho 2 opzioni:
- fare una tabella denominata "attività" e poi ogni volta che qualcuno fa qualcosa, aggiungere un record ad esso con il tipo di azione, id utente, timestamp, ecc
- Problema : La tabella potrebbe essere molto lunga.
- Unire tutte e 3 le tabelle (domande, risposte, answer_comments) e quindi in qualche modo mostrare tutti questi nella pagina nell'ordine in cui è stata eseguita l'azione.
- Problema: questo sarebbe estremamente difficile perché non ho idea di come avrei potuto farle dire "John ha commentato una risposta su una domanda Title Here" semplicemente unendo 3 tavoli.
Qualcuno sa di un modo migliore di fare un registro delle attività in questa situazione? Sto usando PHP e MySQL. Se questo è troppo inefficiente o difficile probabilmente dimenticherò la scheda Attività recenti sui profili ma ho ancora bisogno di un registro delle attività per i moderatori.
Ecco alcuni SQL che ho iniziato a fare per l'opzione 2, ma questo non avrebbe funzionato perché non c'è modo di rilevare se l'azione è un commento, domanda, o rispondere quando mi associo le informazioni in un ciclo 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
Grazie in anticipo per qualsiasi aiuto!
Scusa, la seconda dovrebbe essere effettivamente 'a.userid' (che era un refuso). Comunque grazie mille! Proverò questo e se funziona, accetterò la tua risposta: D E grazie per questo modo di identificare se si tratta di un commento, una domanda o una risposta perché non avrei mai saputo che avresti potuto farlo. – Nathan
Funziona molto :) Sto solo avendo un piccolo problema nel partecipare alla tabella delle domande per ottenere le informazioni sulle domande in modo che possano essere collegate e altre cose. Ecco SQL e PHP: http://screencast.com/t/EJgdGkMPBB Per qualche ragione sui commenti sembra così che mostri la domanda id come titolo e quindi per le risposte non mostri affatto il titolo: http: //screencast.com/t/qvDzliDs9U Sono consapevole che alcune cose non sono ancora come '$ row ['qSlug']' e roba (che è lo slug URL del titolo) ma che non dovrebbe influenzare l'altra roba. – Nathan
Il nome della chiave associativa deriva dal ** primo ** 'SELECT'. Dovresti innanzitutto selezionare tutte le colonne comuni ('id, created, q_id, q_title'), quindi selezionare le ultime colonne distinte (' a.ans_id' e 'ac.id'). Questo non è un difetto: 'UNION' è progettato per selezionare gli stessi dati. Per quanto riguarda il titolo vuoto, stai usando 'qTitle' invece di' q_title'. – andrewtweber