Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

PROBLEMA con sistema de comentarios y respuestas.

hola chicos, bueno no se si este tema es necesario aqui, pero bueno, les planteare mi problema.

he estado haciendo un sistema de comentarios con sus respectivas respuestas, todo bien cuando hago algun comentario, lo guardo en la base de datos en su respectiva tabla y me imprime bien el o los comentarios por cada tema o cada post en el que se inserto el comentario, igual al responder al comentario los datos como la id, autor, a que comentario se esta respondiendo y la respuesta, se insertan correctamente en la base de datos en la tabla de respuestas, el problema radica en que al querer imprimir la respuesta de cada comentario, solo me aparece la respuesta del primer comentario, pero no me imprime la respuesta de los demas comentarios, no se si me explique claramente, ya he intentado de una y mil maneras pero el problema no se resueve aqui les dejo mi codigo:
//COMENTARIOS
mysqli_select_db($conexion, $database_conexion);
$query_comentarios = sprintf("SELECT * FROM comentarios WHERE articulo=%s ORDER BY id DESC", $articulo_id, "int");
$comentarios = mysqli_query($conexion, $query_comentarios) or die(mysqli_error($conexion));
$row_comentarios = mysqli_fetch_assoc($total_comments);
$totalRows_comentarios = mysqli_num_rows($comentarios);

//RESPUESTAS
$comentario_id = $row_comentarios['id'];
mysqli_select_db($conexion, $database_conexion);
$query_respuesta = sprintf("SELECT * FROM respuestas WHERE comentario=%s ORDER BY id ASC", $comentario_id, "int");
$respuesta = mysqli_query($conexion, $query_respuesta) or die(mysqli_error($conexion));
$row_respuesta = mysqli_fetch_assoc($respuesta);
$totalRows_respuesta = mysqli_num_rows($respuesta);



//DIV COMENTARIO (FUNCIONA PERFECTAMENTE)//
<?php if ($totalRows_comments_of_post!=0){ ?>
<?php do { ?>
<div id="comentarios">
<div id="comenta">
<div id="imagen_comenta"><img src="<?php echo $UrlWeb; ?>imgenes/usuario/<?php echo imagen($row_comentarios['autor']); ?>"></div>
<div id="nombre_comenta"><?php echo nombre($row_comentarios['autor']); ?></div>
</div>
<div id="comentario"><?php echo nl2br($row_comentarios['comentario']); ?></div>
</div>
<?php } while ($row_comments_of_post = mysqli_fetch_assoc($comments_of_post)); ?>
<?php } else { ?>
<div id="comentarios"><span>No hay comentarios,</span></div>
<?php } ?>
cuando pongo esta div dentro del DO, WHILE de COMENTARIOS si me aparece la respuesta, pero solo la del ultimo comentario hecho, pero las respuestas de los otros comentarios no, si lo pongo fuera del DO, WHILE si me aparecen todos las respuestas, pero no debajo del comentario, sino debajo de todas las comentarios, es decir fuera del div comentarios...
//DIV RESPUESTA (PROBLEMA)//
<?php if ($totalRows_respuesta!=0){ ?>
<?php do { ?>
<div id="respuestas">
<div id="responde">
<div id="imagen_responde"><img src="<?php echo $UrlWeb; ?>imgenes/usuario/<?php echo imagen($row_respuesta['autor']); ?>"></div>
<div id="nombre_responde"><?php echo nombre($row_respuesta['autor']); ?></div>
</div>
<div id="commented"><?php echo nl2br($row_respuesta['respuesta']); ?></div>
</div>
<?php } while ($row_respuesta = mysqli_fetch_assoc($respuesta)); ?>
<?php } ?>
he hecho funciones le he hecho de mil manera y nada, el problema continua, si no pongo el DO, WHILE de las respuestas, la ultima respuesta en la base de datos, se coloca debajo de cada comentario, aunque este no sea el comentario al que se responde, probablemente sea un detalle del cual no me he percatado, he intentado hacerlo con AJAX pero me resulta lo mismo, tambien he puesto la siguiente condicinal dentro del if o dentro del DO, WHILE:

($row_respuesta['comentario'] == $row_comentarios['id'])

he usado funciones y nada, cuando lo coloco dentro del DO, si que me en lista todos las respuestas del ultimo comentario segun su id, pero no logro que me aparescan las respuestas de los otros comentarios, si alguien podria ayudarme, le agradeceria mucho.

espero haber planteado claramente el problema, de ante mano GRACIAS.
0
Puntos
1838
Visitas
4
Resp
Por Gxscx hace 107 meses
Principiante
Respuesta #1
hola buenas el error lo tienes en esta linea
//RESPUESTAS
$comentario_id = $row_comentarios['id'];
por hay estas pasando la id del primer comentario obtenido en la consulta comentarios, para poder pasar los diferentes valores (ids de comentarios) tendrás que meter toda la consulta //RESPUESTAS dentro del bucle (do while) que saca todo el listado de comentarios y en cada vuelta del bucle le pasara una id de comentario diferente.

la manera mas limpia de hacerlo en con una función, al menos ya tienes una idea de como hacerlo...

saludos!
5
Puntos
Por alber hace 107 meses
Administrador
Respuesta #2
alber dijo:
hola buenas el error lo tienes en esta linea
//RESPUESTAS
$comentario_id = $row_comentarios['id'];
por hay estas pasando la id del primer comentario obtenido en la consulta comentarios, para poder pasar los diferentes valores (ids de comentarios) tendrás que meter toda la consulta //RESPUESTAS dentro del bucle (do while) que saca todo el listado de comentarios y en cada vuelta del bucle le pasara una id de comentario diferente.

la manera mas limpia de hacerlo en con una función, al menos ya tienes una idea de como hacerlo...

saludos!
muchisimas gracias alber, he logrado resolver el problema, ahora todo funciona correctamente.
0
Puntos
Por Gxscx hace 107 meses
Principiante
Respuesta #3
alber dijo:
hola buenas el error lo tienes en esta linea
//RESPUESTAS
$comentario_id = $row_comentarios['id'];
por hay estas pasando la id del primer comentario obtenido en la consulta comentarios, para poder pasar los diferentes valores (ids de comentarios) tendrás que meter toda la consulta //RESPUESTAS dentro del bucle (do while) que saca todo el listado de comentarios y en cada vuelta del bucle le pasara una id de comentario diferente.

la manera mas limpia de hacerlo en con una función, al menos ya tienes una idea de como hacerlo...

saludos!
en realidad sin tu consejo no abria podido resolver el problema, gracias.
5
Puntos
Por Gxscx hace 107 meses
Principiante
Respuesta #4
Gxscx dijo:
alber dijo:
hola buenas el error lo tienes en esta linea
//RESPUESTAS
$comentario_id = $row_comentarios['id'];
por hay estas pasando la id del primer comentario obtenido en la consulta comentarios, para poder pasar los diferentes valores (ids de comentarios) tendrás que meter toda la consulta //RESPUESTAS dentro del bucle (do while) que saca todo el listado de comentarios y en cada vuelta del bucle le pasara una id de comentario diferente.

la manera mas limpia de hacerlo en con una función, al menos ya tienes una idea de como hacerlo...

saludos!
muchisimas gracias alber, he logrado resolver el problema, ahora todo funciona correctamente.
de nada para eso estamos.. saludos
5
Puntos
Por alber hace 107 meses
Administrador
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate