Foros del Web » Programando para Internet » PHP »

Ayuda 2 while

Estas en el tema de Ayuda 2 while en el foro de PHP en Foros del Web. Hola a todos, Bueno mi problema es el siguiente. Estoy armando una especie de Blog, y que en cada entrada tenga sus respectivos comentarios. Código ...
  #1 (permalink)  
Antiguo 04/11/2008, 14:39
Avatar de Breaklo  
Fecha de Ingreso: junio-2008
Ubicación: Buenos Aires
Mensajes: 95
Antigüedad: 15 años, 10 meses
Puntos: 1
Ayuda 2 while

Hola a todos,

Bueno mi problema es el siguiente.
Estoy armando una especie de Blog, y que en cada entrada tenga sus respectivos comentarios.

Código PHP:
<?

$config 
"config.php"// RUTA ABSOLUTA AL ARCHIVO CONFIG.PHP                 predeterminado    (http://www.tudominio.com/config.php)
include($config); 

$query_noticias=mysql_query("select * from noticias order by fecha Desc"$conectarDB);
$query_comentarios=mysql_query("select * from comentarios ",$conectarDB);
$totalregistros=mysql_num_rows($query_comentarios);

while (
$row=mysql_fetch_assoc($query_noticias)) {
echo    
'<h2>'.$row[titulo].'</h2>
        <br><p>'
.$row[articulo].'</p><br>
        <div>'
.$row[autor].' | '.$row[dia].' de '.$row[mes].' del '.$row[año].' a las '.$row[hora].' | '.$row[categoria].' | <a href="'.$pagina.'/admin/noticias.php?do=editar&id='.$row[id_noticia].'">editar</a></div>';
echo 
"Comentarios: ($totalregustros)";
}
while (
$row2=mysql_fetch_array($query_comentarios)) {
echo 
'<p>'.$row2[comentario].'</p>
<div>'
.$row2[nombre].' | '.$row2[email].'</div>';
echo 
"Agregar comentario";

echo 
'<form action=?comentar='.$row[id_noticia].' method="post">
<input type="hidden" name="id" value="'
.$row[id_noticia].'">
<br>Nick:<br>
<input type="text" name="nombre">
<br>E-Mail:<br>
<input type="text" name="email">
<br>Escriba el comentario<br>
<textarea name="comentario" cols="50" rows="10"></textarea>
<br><input type="submit" value="Enviar comentario"><br>
</form>'
;
?>
Como haria para que el segndo while este dentro del primero ?
Por que de esa manera, aparecen todos las noticias, y despues todos los comentarios.


Muchas gracias
  #2 (permalink)  
Antiguo 04/11/2008, 14:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda 2 while

anidalo así...

Código:
FOO (...) {
  FOO (...) {
    FOO (...) {
      FOO (...)
         ...
    }
  }
}
eso lo puedes hacer cuantas veces quieras, siempre en un orden logico adecuado... espero te sirvas

Código PHP:
 while ($mensaje $db->fetchAssoc())
{
  
// OK

  
while ($comentario $db->fetchAssoc())
  {
    
// ok
  
}


__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 04/11/2008, 16:02
Avatar de Breaklo  
Fecha de Ingreso: junio-2008
Ubicación: Buenos Aires
Mensajes: 95
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ayuda 2 while

Código PHP:
<?

while ($noticias $query_noticias->fetchAssoc()) {
echo    
'<h2>'.$noticias[titulo].'</h2>
        <br><p>'
.$noticias[articulo].'</p><br>
        <div>'
.$noticias[autor].' | '.$noticias[dia].' de '.$noticias[mes].' del '.$noticias[a&#241;o].' a las '.$noticias[hora].' | '.$noticias[categoria].' | <a href="'.$pagina.'/admin/noticias.php?do=editar&id='.$noticias[id_noticia].'">editar</a></div>';
echo "Comentarios: ($totalregustros)";

while (
$comentarios $query_comentarios->fetchAssoc()) {
echo 
'<p>'.$comentarios[comentario].'</p>
<div>'
.$comentarios[nombre].' | '.$comentarios[email].'</div>';
echo 
"Agregar comentario";

echo 
'<form action=?comentar method="post">
<input type="hidden" name="id" value="'
.$noticias[id_noticia].'">
<br>Nick:<br>
<input type="text" name="nombre">
<br>E-Mail:<br>
<input type="text" name="email">
<br>Escriba el comentario<br>
<textarea name="comentario" cols="50" rows="10"></textarea>
<br><input type="submit" value="Enviar comentario"><br>
</form>'
;
}}


 
?>

Me quedo eso... Pero no funciona, y me parece que me falta algo...
  #4 (permalink)  
Antiguo 04/11/2008, 16:48
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Ayuda 2 while

hola

pero que es lo que no funciona??

prueba asi

Código PHP:

<?

while ($noticias $query_noticias->fetchAssoc()) {
echo    
'<h2>'.$noticias[titulo].'</h2>
        <br><p>'
.$noticias[articulo].'</p><br>
        <div>'
.$noticias[autor].' | '.$noticias[dia].' de '.$noticias[mes].' del '.$noticias[a&#241;o].' a las '.$noticias[hora].' | '.$noticias[categoria].' | <a href="'.$pagina.'/admin/noticias.php?do=editar&id='.$noticias[id_noticia].'">editar</a></div>';
echo "Comentarios: ($totalregustros)";

while (
$comentarios $query_comentarios->fetchAssoc()) {
echo 
'<p>'.$comentarios[comentario].'</p>
<div>'
.$comentarios[nombre].' | '.$comentarios[email].'</div>';

     }
}
echo 
"Agregar comentario";

echo 
'<form action=?comentar method="post">
<input type="hidden" name="id" value="'
.$noticias[id_noticia].'">
<br>Nick:<br>
<input type="text" name="nombre">
<br>E-Mail:<br>
<input type="text" name="email">
<br>Escriba el comentario<br>
<textarea name="comentario" cols="50" rows="10"></textarea>
<br><input type="submit" value="Enviar comentario"><br>
</form>'
;
  #5 (permalink)  
Antiguo 04/11/2008, 17:26
Avatar de Breaklo  
Fecha de Ingreso: junio-2008
Ubicación: Buenos Aires
Mensajes: 95
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ayuda 2 while

Igual, cuando entro queda la pagina en blanco, Y el servidor esta configurado para no mostrar errores.
Igual es esa parte del codigo que tira error.
  #6 (permalink)  
Antiguo 04/11/2008, 17:37
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Ayuda 2 while

has provado en poner al inicio del script

error_reporting(E_ALL)

o algun

or die (mysql_error()); despues de la consulta a la BBDD???

Un saludo
  #7 (permalink)  
Antiguo 04/11/2008, 17:48
Avatar de Breaklo  
Fecha de Ingreso: junio-2008
Ubicación: Buenos Aires
Mensajes: 95
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ayuda 2 while

Error_reporting : Hasta donde se, se tiene que activar una cosa en php.ini para que funcione. Y no tengo acceso a ese archivo.

Die(mysql_erorr) : Acabo de intentar, no cambia en nada.
-----------

De todas formas, el error parece que esta en el while, por que probé poniendo /* */ a ciertas partes, y es eso lo que da error.
  #8 (permalink)  
Antiguo 04/11/2008, 17:52
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Ayuda 2 while

la estructura de los while esta bien

el error andara por otro sitio dentro del while, revisa que el codigo dentro del while este bien

Un saludo
  #9 (permalink)  
Antiguo 04/11/2008, 18:02
Avatar de Breaklo  
Fecha de Ingreso: junio-2008
Ubicación: Buenos Aires
Mensajes: 95
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ayuda 2 while

Entonces, ya que estamos una pregunta


De las dos formas esta bien ?

Código PHP:
<? echo '<h2>'.$noticias[titulo].'</h2>'?>
Código PHP:
<? echo "<h2>$noticias[titulo]</h2>"?>


EDIT: Tenes razon, los while estan bien.

Última edición por Breaklo; 04/11/2008 a las 18:15
  #10 (permalink)  
Antiguo 04/11/2008, 19:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda 2 while

la segunda forma es la legal.... ya que tienes algunos errores....

Aquí se explica porque: http://www.forosdelweb.com/f18/como-...s-bien-588701/

ahora, tal ves te dejaste llevar por el ejemplo de ->fetchAssoc() ya que en realidad debes usar mysql_fetch_assoc (o lo que uses)

también, te sugiero uses <?php ?> completamente....

otra... aunque no tengas acceso al php.ini puedes lograr el mismo efecto agregando esta sentencia al inicio de tu script ....

Código PHP:
<?php

error_reporting
(E_ALL);

// ...

?>
espero te sirvas...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 04/11/2008, 20:03
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Ayuda 2 while

hola

pienso que la mejor es:

Código PHP:
<? echo "<h2>".$noticias[titulo]."</h2>"?>
Un saludo
  #12 (permalink)  
Antiguo 04/11/2008, 20:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda 2 while

jaronu, porque crees que es mejor esa forma.... ???

mira, lee esto

Comillas dobles, cadenas, variables y constantes en PHP
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 04/11/2008, 20:20
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Ayuda 2 while

La verdad es que no se si es la MEJOR. solo me limite a su ejemplo.

pero depende de donde ontenga el array, no es necesario poner las comillas simples

<? echo "<h2>".$noticias['titulo']."</h2>"; ?>

Ya se que me queda mucho php que aprender, pero mal no estaba.

Un saldo
  #14 (permalink)  
Antiguo 04/11/2008, 20:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda 2 while

Cita:
Iniciado por jaronu Ver Mensaje
no es necesario poner las comillas simples
esto si es un error, queda bien explicado en el enlace que coloque....

hay que saber usar las comillas bien, y no usar cadenas constantes como indices de los arrays; si estas constantes ni siquiera existen, por eso se usan cadenas de texto... con comillas (dobles o sencillas)

lo sugiero, para no quedarse atrapado en un lío de bugs de hace 5 años ... ya que PHP esta evolucionando y no deja espacio para errores comunes... demás, de una carencia de responsabilidad por averiguar los posibles errores de parte de los programadores novatos

en fin, solo es un sugerencia que vale la pena considerar... suerte!

PDTA: lean, por favor...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #15 (permalink)  
Antiguo 04/11/2008, 20:45
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Ayuda 2 while

Pues tienes toda la razon, pero TODA.

lo acabo de probar en local poniendo al principio de un script que tengo

error_reporting (E_ALL);

Y me he llevado una sorpresa al ver la cantidad de errores que habia por no poner comillas simples.
Lo que no entiendo es por que hasta que no se pone error_reporting (E_ALL); no aparecen los errores, PHP deberia de avisar de ese error nada mas cometerlo, como hace por ejemplo cuando no cierras un punto y coma.

Un saludo
  #16 (permalink)  
Antiguo 04/11/2008, 20:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda 2 while

sucede... que parece que la gravedad del error es de calidad NOTICE mientras que otros errores pueden ser FATAL, o incluso en PHP6 STRICT ....

cuando hacemos uso de E_ALL incluso los "errores" mas simples (que no son de sintaxis o internos) salen a la luz, bueno... eso

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #17 (permalink)  
Antiguo 05/11/2008, 15:41
Avatar de Breaklo  
Fecha de Ingreso: junio-2008
Ubicación: Buenos Aires
Mensajes: 95
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ayuda 2 while

Ah con razón, yo pensé que con E_ALL mostraba solo los errores graves.

De todas formas, agregue el "error_reporting(E_ALL);" Al inicio, y no cambió en nada, no muestra ningún error.


1º que diferencias hay entre <? y <?php


2º intente haciendo con 1 while solo, con el de noticias, utilizando el while ($noticias = $db->fetchAssoc()) y funciono bien... Pero el problema viene con el segundo.

Mi objetivo, es hacer que en cada noticia, aparezcan los comentarios,
Ej . Noticia 1, comentario1 , comentario 2 Noticia 2, comentario 1 etc.



3º siempre quise saber para que es el "->" :p



Muchas gracias !
  #18 (permalink)  
Antiguo 05/11/2008, 15:48
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Ayuda 2 while

hola

1.- algunos navegadores no interpretan bien <? siempre es mejor <?php

2.- yo hago algo similar con un while dentro de otro y me funciona de maravilla.

3.- No estas usando alguna clase en tu config.php?? por que lo -> se usan en clases osea POO

Un saludo
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 23:38.