Estoy haciendo una pestaña de "actividad reciente" para los perfiles en mi sitio y también voy a tener un registro para que los moderadores puedan ver todo lo que sucede en el sitio. Esto requeriría crear un registro de actividad de algún tipo.La manera más eficiente de hacer un registro de actividad
Simplemente no sé lo que sería mejor. Tengo 2 opciones:
- hacer una tabla llamada "actividad" y luego cada vez que alguien hace algo, añadir un registro a la misma con el tipo de acción, ID de usuario, fecha y hora, etc.
- Problema : tabla puede ser muy larga.
- Une las 3 tablas (preguntas, respuestas, respuestas_comentarios) y de alguna manera muestra todo esto en la página en el orden en el que se realizó la acción.
- Problema: esto sería extremadamente difícil porque no tengo idea de cómo podría hacerla decir "John ha comentado una respuesta en la pregunta aquí el título" con sólo 3 mesas unirse.
¿Alguien sabe de una mejor manera de hacer un registro de actividad en esta situación? Estoy usando PHP y MySQL. Si esto es demasiado ineficiente o difícil, probablemente olvide la pestaña Actividad reciente en los perfiles, pero aún necesito un registro de actividades para los moderadores.
aquí hay algo de SQL que empecé a hacer para la opción 2, pero esto no funcionaría porque no hay manera de detectar si la acción es un comentario, pregunta o respuesta cuando me hago eco de la información en un bucle 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
¡Gracias de antemano por cualquier ayuda!
Lo sentimos, el segundo debería ser 'a.userid' (que era un error tipográfico). De todos modos muchas gracias! Voy a probar esto y, si funciona, aceptaré tu respuesta: D Y gracias por esa forma de identificar si es un comentario, una pregunta o una respuesta porque nunca pensé que podrías hacer eso. – Nathan
Esto funciona bastante :) Solo estoy teniendo un pequeño problema al unirme a la tabla de preguntas para obtener la información de la pregunta para que pueda vincularse y todo eso. Aquí está el SQL y PHP: http://screencast.com/t/EJgdGkMPBB Por alguna razón, en los comentarios, parece mostrar la identificación de la pregunta como título y luego, para las respuestas, no muestra el título en absoluto: http: //screencast.com/t/qvDzliDs9U Soy consciente de que algunas cosas aún no están en '$ row ['qSlug']' y demás (que es la URL del título), pero eso no debería afectar las otras cosas – Nathan
El nombre de la clave asociativa proviene del ** primer ** 'SELECCIONAR'. Primero debe seleccionar todas las columnas comunes ('id, created, q_id, q_title'), luego seleccione las columnas distintas last (' a.ans_id' y 'ac.id'). Esto no es un defecto - 'UNION' está diseñado para seleccionar los mismos datos. En cuanto al título en blanco, está usando 'qTitle' en lugar de' q_title'. – andrewtweber