Foros del Web » Programando para Internet » PHP »

select count

Estas en el tema de select count en el foro de PHP en Foros del Web. Creo que tengo un poco de lío con el select count. He leído por ahí y en teoría me devuelve el número de filas que ...
  #1 (permalink)  
Antiguo 19/08/2009, 08:41
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
select count

Creo que tengo un poco de lío con el select count. He leído por ahí y en teoría me devuelve el número de filas que cumplen un determinado criterio. Me da la sensación de que no devuelve una variable de tipo numérico pero no me consigo enterar del formato del resultado leyendo por ahí. Así que he probado con éste código:

Código:
<?php
 $link=mysql_connect("localhost","root","");
mysql_select_db(dbimagenes,$link);
$repetido=mysql_query("select count(*) from autores where nick= 'paco'",$link);
echo "$repetido";
  
?>
Y el resutado es:

Resource id #3

En el campo nick de la tabla autores de la base de datos dbimagenes, añado un registro con nick paco y el resultado es el mismo. ¿Qué es eso de Resource id y cómo consigo una variable numérica con el número de registros que tienen un determinado valor?
  #2 (permalink)  
Antiguo 19/08/2009, 08:49
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: select count

el $Repetido no te muestra necesariamente el numero que arroja el count porque lo he probado si quieres contar los resultados yo uso algo asi:

Código PHP:
$row=mysql_fetch_row($repetido);
if(
mysql_num_rows($repetido)>0
ahora si lo que quieres saber es cuanto resultados encontro yo hago asi:

Código PHP:
$Resultados=$row[0]; 
Alli le digo muestrame el valor del campo #0 de la consulta realizada....
y pues alli debe imprimir el valor del count...

Espero te sirva
  #3 (permalink)  
Antiguo 19/08/2009, 09:24
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: select count

El detalle es que el resultado del mysql_query no es propiamente un vector de lectura sino un objeto, te faltaba hacer el fetch y despues llamar al vector en la posicion (nombre del campo) correspondiente

te dejo la estructura con la que yo trabajo que me ha funcionado muy bien para detectar errores;

Código PHP:
<?php
$link
=mysql_connect("localhost","root","");
mysql_select_db(dbimagenes,$link);
$qry="SELECT count(*) AS repetido FROM autores WHERE nick= 'paco'";
echo 
$qry."<br>";
$result=mysql_query($qry,$link);
$row=mysql_fetch_array($result);
echo 
$row["repetido"];
?>


JuJoGuAl:
el resultado de una consulta select count siempre te regresara solo 1 registro por lo que el mysql_num_rows siempre entregara un resultado (valor) = 1

mysql_fetch_row y mysql_fetch_array son equivalentes; la diferencia es la forma en que accesas al vector resultante; con row es por indice y por array es con el nombre del campo.

Saludos
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810
  #4 (permalink)  
Antiguo 19/08/2009, 09:27
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: select count

Hola amigo, debes hacer lo siguiente


$res=mysql_fetch_assoc(mysql_query("select count(*) as total from autores where nick= 'paco'",$link));

echo $res["total"];
  #5 (permalink)  
Antiguo 19/08/2009, 13:56
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
Respuesta: select count

Muhas gracias. También finalmente encontré una entrada similar en este blog con otra solución parecida, que funciona. Al final he hecho esto
<?php
$datos=$_POST['dato'];
$link=mysql_connect("localhost","root","");
mysql_select_db(dbimagenes,$link);
$usuario=$datos[0];
$result=mysql_query("select count(*) from autores where nick='$usuario'",$link);
$repetido=mysql_result($result,0);
if ($repetido>0){
echo "ya está en uso";
echo "<form action ='formregistro.html'><BR>";
echo"<input type='submit' value='ACEPTAR'><br>";
}
else{
mysql_query("Insert into autores(nick,contraseña,nombre,apellidos,centro,pr ovincia,poblacion,colegiado) VALUES('$datos[0]','$datos[1]','$datos[2]','$datos[3]','$datos[4]','$datos[5]','$datos[6]','$datos[7]')",$link);
echo "registrado corréctamente";

echo "<form action ='opciones.php'><BR>";
echo"<input type='submit' value='ACEPTAR'><br>";
}
?>
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 14:30.