Foros del Web » Programando para Internet » PHP »

problema contando resultados

Estas en el tema de problema contando resultados en el foro de PHP en Foros del Web. Hola, estoy usando esta sentencia para contar resultados: $result = mysql_query("SELECT count(*) FROM n_comentarios WHERE id_noticia='$id'"); $total = mysql_result($result,0); echo $total el caso es ke ...
  #1 (permalink)  
Antiguo 07/09/2004, 19:57
 
Fecha de Ingreso: mayo-2004
Mensajes: 75
Antigüedad: 13 años, 7 meses
Puntos: 0
problema contando resultados

Hola, estoy usando esta sentencia para contar resultados:

$result = mysql_query("SELECT count(*) FROM n_comentarios WHERE id_noticia='$id'");
$total = mysql_result($result,0);
echo $total

el caso es ke siempre me muestra resultado 0 aun teniendo la tabla llena

tb e probado estas otras sentencias

$result = mysql_query("SELECT count(*) FROM n_comentarios WHERE id_noticia='$id'");
$total = mysql_num_rows($result);
echo $total


$result = mysql_query("SELECT count(id) FROM n_comentarios WHERE id_noticia='$id'");
$total = mysql_num_rows($result);
echo $total


$result = mysql_query("SELECT id FROM n_comentarios WHERE id_noticia='$id'");
$total = mysql_num_rows($result);
echo $total

y todas me suelen lanzar como resultado 1 aunke no haya nada

aki esta la tabla comentarios:

CREATE TABLE `n_comentarios` (
`id` bigint(7) default NULL,
`id_noticia` bigint(7) default NULL,
`username` varchar(20) default NULL,
`comentario` varchar(250) default NULL,
`fecha` varchar(50) NOT NULL default '',
KEY `id` (`id`)
) TYPE=MyISAM;

haber si me echan una mano.
Gracias y saludos
  #2 (permalink)  
Antiguo 07/09/2004, 20:15
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
La segunda y la tercera opción ni las mires... porque la función COUNT() te devolverá siempre un registro de un sólo campo que tiene como valor la cantidad de registros que cumplieron la condición. O sea que mysql_num_rows() siempre te devolverá 1.

Saludos
  #3 (permalink)  
Antiguo 07/09/2004, 20:20
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Ahora.. sería bueno que verifiques que el SQL se está generando bien... porque es posible que no esté leyendo el valor de la variable $id y en ese caso te estaría generando un SQL así:
SELECT count(*) FROM n_comentarios WHERE id_noticia=''

O sea te devuelve la cantidad de registros que tienen ese campo vacío.

Para verificarlo pon el sql en una variable aparte y luego la pasas como parámetro.
Código PHP:
$sql "SELECT count(*) FROM n_comentarios WHERE id_noticia='$id'";
//aquí puedes ver el valor que generas para ese SQL:
die($sql); 
Saludos
  #4 (permalink)  
Antiguo 08/09/2004, 05:41
 
Fecha de Ingreso: mayo-2004
Mensajes: 75
Antigüedad: 13 años, 7 meses
Puntos: 0
Hola, pues e probado lo q me has dicho y si me salia esto:

SELECT count(*) FROM n_comentarios WHERE id_noticia=''

como podria hacer q la sentecia me lea ese id? (suponiendo q ese id es el de las noticias)

saludos
  #5 (permalink)  
Antiguo 08/09/2004, 05:47
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
¿pero ese $id de donde lo sacas?. De todas maneras al ser un número deberías quitar las comillas simples:

"SELECT count(*) FROM n_comentarios WHERE id_noticia=$id"
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #6 (permalink)  
Antiguo 08/09/2004, 06:53
 
Fecha de Ingreso: mayo-2004
Mensajes: 75
Antigüedad: 13 años, 7 meses
Puntos: 0
acabo de probar sin comillas pero no muestra nada, el $id lo saco de la tabla de las noticias.
  #7 (permalink)  
Antiguo 08/09/2004, 08:45
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
¿Podrías poner la select que utilizas para sacar el $id?. Porque el problema está ahí. Pon todo el código que utilizas para sacarlo.
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #8 (permalink)  
Antiguo 08/09/2004, 08:58
Avatar de The_Dark_Roy  
Fecha de Ingreso: enero-2004
Mensajes: 218
Antigüedad: 13 años, 10 meses
Puntos: 0
bueno de partida no se como diseñaste tu tabla ni que significa $id lo que es para mi y para lo que la uso es para distinguir cada uno de los registro que ingreso osea la key, esto implica que si yo lo hiciera en mi tabla

Código PHP:
$query="SELECT count(*) FROM n_comentarios WHERE id_noticia='$id'";
$result mysql_query("$query");
$total mysql_result($result,0);
echo 
$total 
lo que me devolveria seria uno por como mi variable $id es unica en cada tabla.
Quizas no te has fijado bien en que representan estas variables y lo que te esta dando como resultado esta bien solo que tu no sabes que preguntar por el nombre ( o nick ) de quien envio el mensaje y no por su id
ojaola te haya aclarado algo
__________________
ojala te hayas quitado la venda

http://www.surire.cl
http://www.uta.cl
  #9 (permalink)  
Antiguo 08/09/2004, 09:29
 
Fecha de Ingreso: mayo-2004
Mensajes: 75
Antigüedad: 13 años, 7 meses
Puntos: 0
noticias.php

<?
include ('config.inc.php');

$sql = "SELECT noticias.*, noticias_top.* FROM noticias, noticias_top WHERE noticias.topico=noticias_top.topico_id ORDER BY noticias.id DESC LIMIT 5";

$result = mysql_query($sql);

while($row = mysql_fetch_array($result)) {

echo "<br><br>

<table width=100% border=0 cellpadding=5 cellspacing=1 bgcolor=#999999>
<tr>
<td width=80%><span class=Estilo1>$row[titulo]</span></td>
<td width=20% bgcolor=c0c0c0><div align=right>$row[fecha]</div></td>
</tr>
<tr bgcolor=c0c0c0>
<td colspan=2><table width=100% border=0>
<tr>
<td width=5%><img border=\"1\" src=\"imagenes/$row[imagen]\" width=\"50\" height=\"50\"></td>
<td width=95%>$row[noticia]</td>
</tr>
</table></td>
</tr>
<tr>
<td colspan=2>
<table width=100% border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=80%><b>Enviada por:</b> $row[usuario] comentarios:$total</td>
<td><a href=index.php?mod=noticiacompleta&id=$row[id]>Noticia Completa</a></td>
</tr>
</table></td>
</tr>
</table>";
}
?>

ese es el codigo normal de noticias.php ,entonces ahora tendria q ponerle este otro para q me funcionase el contador de comentarios:

$result = mysql_query("SELECT count(*) FROM n_comentarios WHERE id_noticia=$id");
$total = mysql_num_rows($result);
echo $total
  #10 (permalink)  
Antiguo 08/09/2004, 09:41
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
Según este código tendrías que poner:

$result = mysql_query("SELECT count(*) FROM n_comentarios WHERE id_noticia=".$row['id']);
$total = mysql_num_rows($result);
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #11 (permalink)  
Antiguo 08/09/2004, 09:57
 
Fecha de Ingreso: mayo-2004
Mensajes: 75
Antigüedad: 13 años, 7 meses
Puntos: 0
pero en ke parte exactamente tendria q ponerlo? porke e probado asi:

<?
include ('config.inc.php');

$sql = "SELECT noticias.*, noticias_top.* FROM noticias, noticias_top WHERE noticias.topico=noticias_top.topico_id ORDER BY noticias.id DESC LIMIT 5";

$result2 = mysql_query("SELECT count(*) FROM n_comentarios WHERE id_noticia=".$row['id']);
$total = mysql_num_rows($result2);

$result = mysql_query($sql);

while($row = mysql_fetch_array($result)) {

echo "<br><br>

<table width=100% border=0 cellpadding=5 cellspacing=1 bgcolor=#999999>
<tr>
<td width=80%><span class=Estilo1>$row[titulo]</span></td>
<td width=20% bgcolor=c0c0c0><div align=right>$row[fecha]</div></td>
</tr>
<tr bgcolor=c0c0c0>
<td colspan=2><table width=100% border=0>
<tr>
<td width=5%><img border=\"1\" src=\"imagenes/$row[imagen]\" width=\"50\" height=\"50\"></td>
<td width=95%>$row[noticia]</td>
</tr>
</table></td>
</tr>
<tr>
<td colspan=2>
<table width=100% border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=80%><b>Enviada por:</b> $row[usuario] comentarios:$total</td>
<td><a href=index.php?mod=noticiacompleta&id=$row[id]>Noticia Completa</a></td>
</tr>
</table></td>
</tr>
</table>";
}
?>
y no se si estara bien puesto, pero no me muestra nada

P.D: perdonar mi torpeza
  #12 (permalink)  
Antiguo 08/09/2004, 10:06
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
lo tendrías que poner después del while:

while($row = mysql_fetch_array($result)) {
$result2 = mysql_query("SELECT count(*) FROM n_comentarios WHERE id_noticia=".$row['id']);
$total = mysql_num_rows($result2);

Ten en cuenta que lo tienes que hacer para cada una de las noticias.
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #13 (permalink)  
Antiguo 08/09/2004, 10:20
 
Fecha de Ingreso: mayo-2004
Mensajes: 75
Antigüedad: 13 años, 7 meses
Puntos: 0
pues acabo de probarlo y sigue=, no se porke peor me sigue mostrando 1 en todos los resultados de las noticias, creo q al final acabare sin poner comentarios xD.
  #14 (permalink)  
Antiguo 08/09/2004, 10:22
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
¿pero ahora $row['id'] toma valor?. si haces

echo "SELECT count(*) FROM n_comentarios WHERE id_noticia=".$row['id']

¿que te sale?
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #15 (permalink)  
Antiguo 08/09/2004, 10:29
 
Fecha de Ingreso: mayo-2004
Mensajes: 75
Antigüedad: 13 años, 7 meses
Puntos: 0
haciendo esto:

$result2 = mysql_query ("SELECT count(*) FROM n_comentarios WHERE id_noticia=".$row['id']);
die($result2);

Resource id #40

y si se refiere a una $id numero 40 desde luego no tengo ninguna
  #16 (permalink)  
Antiguo 08/09/2004, 10:32
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
después del while pon esto:

while($row = mysql_fetch_array($result)) {
echo $row['id']."<br>";

¿Qué id's te muestra?
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #17 (permalink)  
Antiguo 08/09/2004, 10:36
 
Fecha de Ingreso: mayo-2004
Mensajes: 75
Antigüedad: 13 años, 7 meses
Puntos: 0
me muestra las ids correspondientes a las noticias

111,
110, y
109
  #18 (permalink)  
Antiguo 08/09/2004, 10:40
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
¿y cuantas noticias tienes en n_comentarios con ese id_noticia (con el 109 por ejemplo)?
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #19 (permalink)  
Antiguo 08/09/2004, 10:44
 
Fecha de Ingreso: mayo-2004
Mensajes: 75
Antigüedad: 13 años, 7 meses
Puntos: 0
supongo q te referiras a comentarios en vez de noticias en n_comentarios no?

si es asi, solo tengo 1 comentario en la id 109 (perteneciente a esa noticia) y en la id 110 otro, en la id 111 no tengo ninguno
  #20 (permalink)  
Antiguo 08/09/2004, 10:50
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
si perdona, me refería a eso. Entonces en $total tendría que salirte 1,1 y 0 respectivamente, es así como te salé?
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #21 (permalink)  
Antiguo 08/09/2004, 10:52
 
Fecha de Ingreso: mayo-2004
Mensajes: 75
Antigüedad: 13 años, 7 meses
Puntos: 0
nop, me sale 1,1 y 1 y aunke no haya nada tb me sale 1, 1 y 1
  #22 (permalink)  
Antiguo 08/09/2004, 11:04
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
pues creo que la socuión está en que contrates a una persona que vaya contando los comentarios cada 5 minutos

Es que no sé donde puede estar el error......dices que aun estando la tabla vacía te devuelve un 1??
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #23 (permalink)  
Antiguo 08/09/2004, 11:09
 
Fecha de Ingreso: mayo-2004
Mensajes: 75
Antigüedad: 13 años, 7 meses
Puntos: 0
yo creo q tb es la mejor solucion xD

si, me devuelve un 1 si pruebo con $row[id] o $id simplemente e llegado a probar otras cosas y me salia 0 pero aun asi esta mal, de todas formas gracias x la ayuda.
  #24 (permalink)  
Antiguo 08/09/2004, 11:22
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
Es una tontería pero prueba a poner SELECT count(id) en vez de SELECT count(*)
__________________
¿Te apasiona el mundo del guión? El portal del guión
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 04:40.