Foros del Web » Programando para Internet » PHP »

Contar comentarios de una noticia

Estas en el tema de Contar comentarios de una noticia en el foro de PHP en Foros del Web. Buenas. Tengo un sistema de noticias con comentarios y como es normal, queria que mostrara la cantidad de comentarios que se ha hecho en cada ...
  #1 (permalink)  
Antiguo 12/05/2009, 11:26
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 9 meses
Puntos: 5
Exclamación Contar comentarios de una noticia

Buenas.

Tengo un sistema de noticias con comentarios y como es normal, queria que mostrara la cantidad de comentarios que se ha hecho en cada una...Tengo esta consulta hecha

Código sql:
Ver original
  1. SELECT base_desarrollo.id, IFNULL(COUNT(base_comentarios.des_id),0) total FROM base_comentarios INNER JOIN base_desarrollo ON base_comentarios.des_id = base_desarrollo.id GROUP BY  base_desarrollo.id";

Y mi problema ahora es mostrar el resultado, he pensado varias formas pero no me funciona como deberia. Al final he dejado esta (aunque sigue sin funcionar pero es la ultima forma que probe)

Código php:
Ver original
  1. $res = mysql_query($query, $link);
  2. $row = mysql_fetch_array($res);
  3. $numc = $row['total'];
  4.  
  5. $canti = $num_comments['des_id'];
  6. if( $numc == 0 ) {
  7.     $cant = "0 Comentarios";
  8. } elseif( $numc == 1 ) {
  9.     $cant = "1 Comentario";
  10. } elseif( $numc > 1 ) {
  11.     $cant = $numc . " Comentarios";
  12. }

El problema es que me dice "1 Comentario" en todas las noticias y no hay 1 en todas. Tengo 3 noticias y en cada una hay una cantidad distinta para ver si funcionan los 3 if...

Si alguien pudiera ayudarme se lo agradeceria, llevo demasiado tiempo atascado en esta parte
Salu2
  #2 (permalink)  
Antiguo 12/05/2009, 11:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Contar comentarios de una noticia

Imprime $numc para que veas que valor te esta dando, y con eso compares si es correcto o no.

Saludos.
  #3 (permalink)  
Antiguo 12/05/2009, 12:49
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: Contar comentarios de una noticia

Cita:
El problema es que me dice "1 Comentario" en todas las noticias y no hay 1 en todas.
La imprimo y me dice 1 en todas.

He hecho esto

Código php:
Ver original
  1. echo '<pre>';
  2. print_r($cant);
  3. die();

y esto (aunque las dos son lo mismo xD)

Código php:
Ver original
  1. echo '<pre>';
  2. print_r($numc);

y el resultado es 1, no me da la cantidad real y no entiendo es de comparar si es correcto o no ._. no es correcto y por eso pedia ayuda
  #4 (permalink)  
Antiguo 12/05/2009, 13:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Contar comentarios de una noticia

Pues probablemente necesitas hacer ese query en un while() para que vayas viendo los diferentes valores.

Ejecuta tu consulta en tu gestor de BDD favorito para que veas que resultados te arroja.

Saludos.
  #5 (permalink)  
Antiguo 12/05/2009, 13:26
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: Contar comentarios de una noticia

En mi gestor funciona correctamente la consulta asi que si, como suponia el fallo esta en que no se como utilizarlo para mostrar el resultado :P

He hecho esto:

Código php:
Ver original
  1. $num_comments = array();
  2. while( $row = mysql_fetch_assoc( $res ) ) {
  3.     $num_comments[] = mysql_num_rows($res);
  4. }

y luego hice esto

Código php:
Ver original
  1. print_r($num_comments['des_id']);

y no me muestra ningun valor. Ni siquiera 0, nada.

Luego tambien he probado con esto

Código php:
Ver original
  1. while( $row = mysql_fetch_assoc( $res ) ) {
  2.     $num_comments['des_id'] = mysql_num_rows($res);
  3. }

y ahora el print_r me muestra 22 y en todas las noticias me dice que hay 2 Comentarios cuando tampoco es cierto...

Ahora, en el TPL es donde debo arreglarlo supongo. He usado esto:

Código html:
Ver original
  1. <? foreach( $num_comments as $numc ): ?>
  2.                                 <TD class="devrep"><?=$numc['des_id']?></TD>
  3.                             <? endforeach;?>

pero haciendo esto no me muestra nada u.u ya me son demasiados problemas para mostrar simplemente el numero de comentarios jeje

Gracias por responderme, GatorV ^^

EDIT:

He estado haciendo mas pruebas y veo que el ultimo resultado que me da en mi gestor de BD es 2, eso quiere decir que el while me esta devolviendo el numero del ultimo registro...

Última edición por Vendetta; 12/05/2009 a las 13:39
  #6 (permalink)  
Antiguo 12/05/2009, 13:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Contar comentarios de una noticia

Prueba esto:
Código php:
Ver original
  1. $num_comments = array();
  2. while( $row = mysql_fetch_assoc( $res ) ) {
  3.     $num_comments[] = $row;
  4. }
  5. var_dump($num_comments);

Saludos.
  #7 (permalink)  
Antiguo 12/05/2009, 15:11
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: Contar comentarios de una noticia

Puse lo que me dijiste y me sale la info del Array en pantalla o.o

Código:
array(1) {
  [0]=>
  array(2) {
    ["id"]=>
    string(2) "19"
    ["total"]=>
    string(1) "2"
  }
}
Parece que el Array(1) no funciona no? Osea no devuelve nada o como? XD agradeceria que me explicaras :P ahora buscare la funcion esa en php.net xD

Igualmente, deberia devolver 2 Arrays con info porque tengo 2 noticias con comentarios
  #8 (permalink)  
Antiguo 12/05/2009, 17:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Contar comentarios de una noticia

Si solo te sale 1 resultado de la consulta es que solo hay 1 resultado de tu query, por eso mi insistencia de que probaras la consulta en tu gestor y analizaras que resultados te da, posteriormente la implementas en PHP y trabajas sobre esos resultados.

Saludos.
  #9 (permalink)  
Antiguo 12/05/2009, 18:37
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: Contar comentarios de una noticia

Cita:
Iniciado por GatorV Ver Mensaje
Si solo te sale 1 resultado de la consulta es que solo hay 1 resultado de tu query, por eso mi insistencia de que probaras la consulta en tu gestor y analizaras que resultados te da, posteriormente la implementas en PHP y trabajas sobre esos resultados.

Saludos.
Y por eso la he probado y he dicho que en el gestor me muestra 2 registros, que son los que tiene que mostrar.

Cita:
En mi gestor funciona correctamente la consulta asi que si, como suponia el fallo esta en que no se como utilizarlo para mostrar el resultado :P
Y lo que no entiendo es porque en el PHP solo muestra uno si en el gestor muestran los 2
  #10 (permalink)  
Antiguo 12/05/2009, 18:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Contar comentarios de una noticia

Mmm muy raro, porque aun con el cliclo while si hubieran mas resultados te deberia de mostrar todos los resultados que se ejecuten...
  #11 (permalink)  
Antiguo 13/05/2009, 04:40
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: Contar comentarios de una noticia

Si quieres saco un screen para que veas que en el phpMyAdmin salen 2 resultados en la ID 17 y en la ID 19, la 17 con 1 comentario y la 19 con 2 comentarios. Pero a la hora de mostrarlo, muestra el resultado de la ultima ID de la lista "2 Comentarios" en las 4 noticias que hay creadas.

Por eso comence a liarme y a usar otras cosas distintas al while, creia que se haria distinto o no se, estoy totalmente perdido
  #12 (permalink)  
Antiguo 13/05/2009, 09:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Contar comentarios de una noticia

Revisa tu codigo que no estes mandando llamar a ningún mysql_fetch_array() antes y de ser necesario crea un pagina aparte con solo el código para llamar a la consulta y mostrar los resultados, puede que tu problema venga por otro lado.

Saludos.
  #13 (permalink)  
Antiguo 13/05/2009, 10:15
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: Contar comentarios de una noticia

Ya esta solucionado...

Tenia el mysql_fetch_array() de antes ademas la he unido a la consulta de noticias porque si no se mostraba mal. Ahora tengo otro problema pero ya lo posteare dentro de unos dias, cuando ya no te acuerdes de mi (?) xD

Un saludo y Muchas Gracias ^^
  #14 (permalink)  
Antiguo 13/05/2009, 12:57
Avatar de dyegox  
Fecha de Ingreso: enero-2008
Mensajes: 173
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: Contar comentarios de una noticia

puedes hacer asi:
Código PHP:
<?php
$cantidad
=mysql_num_rows($result); //aca nombre variable mysql_query de los comentarios
echo $cantidad." Comentarios";
?>
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 12:10.