buenas, he conseguido resolver un problema que tenía al mostrar unos resultados que se lo explicaré posteriormente. Lo he resuelto sola, pero sin saber muy bien cómo y me gustaría que me explicasen el porqué.
Yo
tenía el siguiente código para hacer una consulta y mostrar unos comentarios:
Código PHP:
$query_comentario = "SELECT * FROM comentarios_noticias WHERE id_noticia='$recordID' ORDER BY 'ID_comentario' ASC";
$comentario = mysql_query($query_comentario, $conexion) or die (mysql_error());
$row_comentario = mysql_fetch_assoc($comentario)?>
ahora bien, si para mostrar los comentarios ponía:
Código PHP:
<? while($row_comentario = mysql_fetch_assoc($comentario)){
[código para crear un div con los resultados]
} ?>
me mostraba sólo a partir del segundo resultado, si sólo había un comentario nunca lo mostraba y si había dos sólo mostraba 1, etc.
el segundo caso intenté cambiarlo por el bucle do/while
Código PHP:
do{
[código para crear div con los resultados]
}while($row_comentario = mysql_fetch_assoc($comentario)) ?>
en este caso siempre se mostraban correctamente todos los comentarios insertados, pero en las páginas que no había comentarios, me creaba el div con los contenidos genéricos, aunque luego estuviese vacío.
por último conseguí resolverlo poniendo el primer código así:
Código PHP:
$query_comentario = "SELECT * FROM comentarios_noticias WHERE id_noticia='$recordID' ORDER BY 'ID_comentario' ASC";
$comentario = mysql_query($query_comentario, $conexion) or die (mysql_error());
es exactamente igual, pero quité esta fila
Código PHP:
$row_comentario = mysql_fetch_assoc($comentario)?>
entiendo más o menos la sintaxis del do/while y el while, lo que no entiendo es porque no mostraban el primer resultadoo creaban más resultados de los que había... obviamente es por la sentencia de $row_comentario = mysql_fetch_assoc($comentario), pero no entiendo porqué y me gustaría que me lo explicaran
gracias