Ayuda con con script PHP y mySQL

topokie

Bovino maduro
#1
Hola a todos, necesito su ayuda urgentemente. Estoy haciendo una pequeña red social para el trabajo. y necesito ayuda en una consulta a la base de datos. el sitio web es muy parecido al funcionamiento de twitter. en la página principal quiero seleccionar de mi base de datos los comentarios solo de los amigos agregados que tenga el usuarios y los comentarios del propio usuario.

la estructura de mi base de datos es la siguiente:
tabla contactos(campos [id_contacto, contacto_amigo, contacto_amigo_amigo] )

tabla comentarios(campos [id_comentario, id_user, comentario])

el campo contacto_amigo es el id de usuario y el campo contacto_amigo_amigo es el id de usuario del contacto que ya hayas agregado como amigo.

Alguien tiene idea de como se hace? hasta el momento solo puedo poner los comentarios de todos los usuarios registrados en la base de datos o en el mejor de los casos, puedo poner los comentarios de los usuarios que tengas agregado como amigos, pero sin poder poner los comentarios del propio usuario.

ayudaaa porfavoor
 

crack_neon

Bovino maduro
#2
jejeje. Interesante. Haber, intentemos analizar. yo haría esto:

Tabla usuarios
id_usuario (autoincrementable)
nombre_usuario

tabla amigos_usuario
id_amigo (autoincrementable)
id_usuario (llave foranea de tabla usuarios)
id_amigo (llave foranea de tabla usuarios, pero esta indica el id del amigo)

tabla mensajes
id_mensaje (auntoincrementable)
id_usuario (llave foranea de tabla usuarios)
mensaje

tabla respuestas_mensajes
id_mensaje (llave foranea de tabla mensajes)
id_respuesta (autoincrementable y clave principal)
id_usuario (llave foranea de tabla usuarios)
respuesta




Quiero suponer que sabes relacionar tablas, creo que el meollo del asunto esta en agregar una tabla que contenga las respuestas a los mensajes.
 

topokie

Bovino maduro
#3
Gracias por la respuesta, pero la tablas ya las tengo, son iguales a las que pusiste, el problema no es ese, lo que necesito hacer es la consulta para que solo me de los mensajes de los usuarios que tengas agregados en la tabla amigos. por ejemplo:


tabla amigos_usuario
id_amigo id_usuario id_amigo
1-----------3-------- 4
2 ----------3--------- 6

si el usuario con id 3 entra a su sesion, solo va a poder ver los mensajes escritos por el usuario con id 4 y 6.
 

nukerkun

Bovino maduro
#4
¿Eh tabla amigos_usuario?
usuario
id (autoincrementable)
nick (o nombre)
pwd
amigos (varchar o text)

tema (thread)
id (autoincrementable)
id_usuario (el que posteó inicialmente el thread)
cuerpo_del_thread (campo de texto)

mensaje
id (autoincrementable) [Para organizar los mensajes por "fechas"]
id_usuario
id_thread
cuerpo_del_mensaje

en usuario->amigos pones los id's de los usuarios que son sus amigos, funcionaría mas como blog que como twitter, si quieres como twitter solo olvida la tabla thread y la tabla mensaje quedaría así:
mensaje
id
id_usuario
cuerpo_del_mensaje
 

crack_neon

Bovino maduro
#7
sopas

tabla amigos_usuario..

id_amigo
id_usuario
id_amigo ??? otra vez el mismo nombre de columna??

que pendejada mas grande..

jajaja fe de erratas...cierto

creo que quise decir:

id_amigo_usuario
id_usuario
id_amigo


Y siendo más estrictos ni si quiera es necesario un autoincrementable, ya que es una relación uno a uno.
 

topokie

Bovino maduro
#8
Fue un error de dedo lo de repetir el campo, pero ese no es el problema... lo voy a explicar mejor a ver si me pueden hechar la mano...el problema no es con la estructura de la tabla...esa ya la tengo bien claro, el problema es con la consulta. hasta ahora lo único que he podido hacer es que me muestre los comentarios de mis amigos... pero no puedo hacer que me muestre también los míos al mismo tiempo (obviamente en orden de tiempo)

La consulta que hice fue la siguiente:

"select * from post, contactos where post.id_user = contactos.id_contacto_amigo and contactos.contacto_amigo='$usuario' ORDER by post.id_post DESC"

ahí me muestra sólo los comentarios hechos por los amigos que tenga agregados.

ahora como puedo hacer que también me muestre los comentarios hechos por mi, ¿me expliqué?

Agradecería mucho su ayuda.
 
Arriba