Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Agrupar comentarios y respuesta x foto

Estas en el tema de Agrupar comentarios y respuesta x foto en el foro de Mysql en Foros del Web. Hola esto tiene php y nose si va solo en php. Necesito ayuda , no logro sacar la solución a este problema. Escenario: album de ...
  #1 (permalink)  
Antiguo 05/06/2009, 00:23
zx9
 
Fecha de Ingreso: noviembre-2006
Mensajes: 29
Antigüedad: 17 años, 5 meses
Puntos: 2
Pregunta Agrupar comentarios y respuesta x foto

Hola esto tiene php y nose si va solo en php.

Necesito ayuda , no logro sacar la solución a este problema.

Escenario:
album de fotos tiene fotos, se identifica la foto con (foto_id)
y a cada foto se le hace comentario (contenido_comentario) y se identifica con numero de comentario (topico_p_id) desde un usuario que envia , se identifica con (envia_coment_id);

el dueño de la foto responde el comentario,
se hace UPDATE a la fila del comentario(topico_p_id) , se agrega la respuesta (contenido_respuesta) y el ID del que responde osea el duño (envia_respuesta_id).

Cada comentario y su respuesta ESTá EN LA MISMA FILA.

la insercion de comentarios y los UPDATE SET (contenido_respuesta) (topico_r_id) (envia_respuesta_id) las logro hacer bien.


El problema:
Necesito recojer los comentarios y las respuestas AGRUPADOS POR FOTO, de la siguiente forma:


photo_id 'nx'
comentario 1
respuesta 1
comentario 2
respuesta 2
comentario 3
respuesta 3


photo_id 'nz'
comentario 1
respuesta 1
comentario 2
respuesta 2
comentario 3
respuesta 3


y mostrarlo en php CON UNA SOLA CONSULTA A MYSQL , ya que en 1 sola tabla esta todo y en cada fila , está el comentario y la respuesta.

Código SQL:
Ver original
  1. $sql_cr=$db->query("SELECT * FROM
  2.      (SELECT id,
  3.     foto_id AS id_dela_foto,
  4.     topico_p_id AS numero_de_pregunta,
  5.     topico_r_id AS numero_de_respuesta,
  6.     contedido_comentario AS cnt_coment,
  7.     contenido_respuesta AS cnt_resp,
  8.     envia_coment_id AS enviac_id,
  9.     envia_respuesta_id AS envr_id
  10.     receptor_username AS rcpt_username,
  11.     fecha_comentario AS fecha_com,
  12.     fecha_respuesta AS fecha_resp,
  13.     nombre_dela_foto AS nombre_foto
  14.     FROM comentarios_y_respuestas  
  15.     WHERE envia_coment_id='".$session->valor('usuario_id')."'
  16.     AND envia_coment_deleted=0
  17.     ORDER BY fecha_comentario DESC LIMIT 0,20 )DEV
  18.     GROUP BY DEV.foto_id ") ;

con GROUP BY me dá 1 sola fila , no me sirve

sin GROUP BY y con while($detalles_comentarios=$db->fetch_array($sql_cr)){
xxx xxx x xxxx
}

me muestra en renglones FOTO 'nx' TRAS FOTO 'nx' IGUAL y su comentario y su respuesta
Y ESTO ES LO QUE NO QUIERO

QUIERO

FOTO 'nx' y TODOS los (comentario ,su respuesta)

FOTO 'nz' y TODOS los (comentario ,su respuesta)
como está graficado mas arriba.

con 1 sola consulta de MySql, no hacer multiples consultas.

Sintesis:
el dueño de las fotos quiere ver FOTO, comentarios y las respuestas que 'El' dió,
una foto debajo de la otra.

Gracias por ayudarme.

.

Última edición por zx9; 05/06/2009 a las 06:27
  #2 (permalink)  
Antiguo 05/06/2009, 05:18
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Agrupar comentarios y respuesta x foto

Lo que debes conseguir es esto

photo_id 'nx' comentario 1 respuesta 1
photo_id 'nx' comentario 2 respuesta 2
photo_id 'nx' comentario 3 respuesta 3
photo_id 'nz' comentario 1 respuesta 1
photo_id 'nz' comentario 2 respuesta 2
photo_id 'nz' comentario 3 respuesta 3

y luego con php mostrar una foto (una sola vez) y sus comentarios....


Código sql:
Ver original
  1. SELECT id, foto_id AS id_dela_foto, topico_p_id AS numero_de_pregunta, topico_r_id AS numero_de_respuesta, contedido_comentario AS cnt_coment, contenido_respuesta AS cnt_resp, envia_coment_id AS enviac_id, envia_respuesta_id AS envr_id, receptor_username AS rcpt_username, fecha_comentario AS fecha_com, fecha_respuesta AS fecha_resp, nombre_dela_foto AS nombre_foto
  2. FROM comentarios_y_respuestas  
  3. WHERE envia_coment_id='".$session->valor('usuario_id')."'
  4. AND envia_coment_deleted=0
  5. ORDER BY foto_id, fecha_comentario DESC LIMIT 0,20

solo ehe modificado

ORDER BY foto_id, fecha_comentario


cuidado con el efecto de ese limit... ssolo quieres mostrar las fotos de los ultimos 20 comentarios estari bien.... pero si quieres los ultimos 20 de cada foto no ....

Quim
  #3 (permalink)  
Antiguo 05/06/2009, 06:20
zx9
 
Fecha de Ingreso: noviembre-2006
Mensajes: 29
Antigüedad: 17 años, 5 meses
Puntos: 2
De acuerdo Respuesta: Agrupar comentarios y respuesta x foto

@quimfv
Si , esa querry es la que utilazaba y me dá esos resultados y de esa manera.

Veo que no hay otra forma sencilla por medio de MySql
necesito ordenar y eliminar los 'foto_id' repetidas por medio de PHP.
osea filtrar/eliminar //agrupar ,,, todo mediante arrays asociativos
y eso es lo que nose hacer hasta ahí no llego con mi conocimiento.

Veo que entendiste lo que necesito.

Me ayudás con el correspondiente filtrar/eliminar //agrupar por arrays de php?

Gracias x ayudarme
  #4 (permalink)  
Antiguo 05/06/2009, 10:25
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Agrupar comentarios y respuesta x foto

Depende de como lo hagas pero el mismo bucle de lectura de los datos puede hacer lo que necesitas...

Pero si es cosa de php.

Quim
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:44.