Hola, llevo unos días pensando cómo hacer un panel de novedades como el que hay en Facebook, es decir, que te sale de cada persona lo que ha hecho últimamente y tal, pero no se me ocurre cómo puede estar hecho. ¿Alguna idea?
Supongo que es algo que tu deseas hacer osea que no sea de facebook sino solo la idea de mostrar ultimas novedades, si es asi pues eso dependeria de 2 cosas que a mi parecer es a como facebook lo toma 1 es fecha de publicacion y otra el total de comentarios o likes que tiene esta entonces ya de ahi hacer una consulta mostrando y con ella misma ordenando de mayor a menor trascendencia.
Ejemplo sencillo
Tabla user
idUser
usuario
Tabla Publicaciones
idPub
idUser
Titulo
Fecha
Likes
Tabla Comentario
idCom
idPub
idUser
Comentario
Fecha
Y podria hacer una consulta algo como
SELECT a.Titulo, a.idUser, b.Comentario, b.idUser FROM Publicaciones a INNER JOIN Comentario b ON a.idPub = b.idPub Order by a.Fecha DESC, a.Likes DESC, b.Fecha
Bueno ahi seria algo sencillo ya tambien se podria agregar que muestre u ordene por la publicacion con mas comentarios o algo asi hehe xP
Hola, gracias a los dos por responder. Y sí, me refería a lo que dice s00rk, pero ¿y si además de comentarios quieres coger de otra tabla de amigos? ¿Crees que harán otra consulta distinta?, es decir, una para los comentarios y otra para los amigos?
Gracias y un saludo!
pues de amigos ya tendrias una tabla llamada emm
Amigos
idAmigo
idUser1
idUser2
y ya solo buscar o agregar en la consulta
WHERE idUser1 = useractual OR idUser2 = useractual
donde useractual es el id del usuario actualmente conectado, bueno espero darme a enatender xp
Pero es que creo que eso no es del todo eficiente, tienes que hacer mínimo dos consultas por usuario, así que si muestras 10 usuarios tienes que hacer 20 consultas antes de cargar la página, yo creo que es demasiado, no?
Gracias!
No, con una consulta bastaria, tomando como ejemplo las tablas que he puesto anteriormente, para mostrar las publicaciones con mas Likes, de amigos tuyos seria asi:
SELECT a.Titulo, a.idUser, b.Comentario, b.idUser FROM Publicaciones a INNER JOIN Comentario b ON a.idPub = b.idPub WHERE EXISTS (SELECT c.idAmigo FROM Amigos c WHERE (c.idUser1 = $userid AND c.idUser2 = a.idUser) OR (c.idUser2 = $userid AND c.idUser1 = a.idUser)) Order by a.Likes DESC
Bueno pues algo asi seria la consulta, solo ahi pues cambiar lo de $userid, por el id del usuario logueado actualmente xP, ya con eso deberia mostrarte publicaciones de solo los amigos del que esta logueado
Anda, pues tienes razón, gracias. No había usado nunca lo de WHERE EXISTS y ni lo había pensado jaja
Un saludo!