Foros del Web » Programando para Internet » PHP »

duda basica

Estas en el tema de duda basica en el foro de PHP en Foros del Web. holas mi pregunta es super basica ... ¿como cuento los datos de una tabla de una bd y que me de un valor numerico?...
  #1 (permalink)  
Antiguo 02/02/2003, 21:14
Avatar de goya  
Fecha de Ingreso: enero-2002
Ubicación: La Serena
Mensajes: 273
Antigüedad: 22 años, 3 meses
Puntos: 1
duda basica

holas
mi pregunta es super basica ...
¿como cuento los datos de una tabla de una bd y que me de un valor numerico?
__________________
:adios:
..."Hay dos cosas que son infinitas: el universo y la estupidez humana; y no estoy muy seguro acerca del universo."
Albert Einstein
  #2 (permalink)  
Antiguo 02/02/2003, 21:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
A que te refieres:

- Al total de registros que te arroja una consulta?
- A sumar los valores de una "fila" (de un campo en concreto con respecto a todos los resultados que dió la consulta)

Tambien .. dí que Base de datos estas trabajando .. suponemos Mysql?

Si es Mysql . caso 1º (supongo q será ese ..):

Código PHP:
$consulta=mysql_query($sql);
echo 
mysql_num_rows($consulta); 
Eso sería el total de registros de esa tabla que ha generado esa consulta .. tambien tienes mysql_affected_rows() .. que son los registros afectados tras una operacion de INSERT/DELETE/UPDATE .. (no un SELECT ..)

Tambien lo puedes hacer via SQL completo:

SELECT COUNT(*) as total FROM tabla .... (Where .. etc si es necesario )

Ahí tendras el "total" un campo nuevo (se hizo un alias ..) con el total de registros de esa tabla bajo esas condiciones (si las aplicacas)...

Un saludo,
  #3 (permalink)  
Antiguo 02/02/2003, 21:33
Avatar de WyLY  
Fecha de Ingreso: enero-2002
Ubicación: Cancun, México.
Mensajes: 506
Antigüedad: 22 años, 3 meses
Puntos: 6
<?
$conexio = mysql_connect("localhost","user","pass");
mysql_select_db ("nombre_db", $conexio) OR die ("WTF no se conexto");// Sustituye: user,pass y nombre_db por tus datos
$sql="SELECT * FROM tabla"; //el nombre de tu tabla.
$result=mysql_query($sql,$conexio);
$total = mysql_num_rows($result);
echo "<font face=tahoma size=2 color=black><b>$total</b></font>";
mysql_close ($conexio);
?>

saludos.
__________________
I do techy stuff for a living and practice MMA with my dog... He always wins.
  #4 (permalink)  
Antiguo 06/02/2003, 03:21
 
Fecha de Ingreso: febrero-2003
Mensajes: 3
Antigüedad: 21 años, 2 meses
Puntos: 0
Nunca...

Lo que nunca nunca nunca se debe hacer es un "select * from..." para contar los campos...

¿Porque? Pues el hecho mismo de devolver a lo mejor 5000 campos o más es una auténtica locura y aunque se soporte por la máquina, si vuestra página recibe muchas visitas eso puede llegar a tirar un día el servidor o hacerlo prácticamente inviable.


Puedes hacerlo con una mezcla de lo anterior...

$query = "SELECT count(*) FROM tabla;";

$DBQ = mysql_query($query, $conn);

$DBR = mysql_fetch_array($DBQ);

$numeroResultados = $DBR[0];

y ya está, una consulta muy breve y muy rápida...

Saludos
  #5 (permalink)  
Antiguo 06/02/2003, 12:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Optimizando un poco mas ...

Código PHP:
$query "SELECT count(*) FROM tabla;";

$DBQ mysql_query($query$conn);

$total_registros=mysql_result($DBQ,0); 
Usando msyql_result .. no generamos un array para solo extraer un elemento que es el que genera COUNT(*) (solo un registro/campo) con ese total en el.

Lo de "nunca nunca" .. es relativo .. Todo tiene su uso ..

Si necesitas mostrar algun campo de esa tabla y a su vez contar el total .. Usa mysql_num_rows() .. pues eso se aplica a la consulta realizada ..

Usando SQL necesitarias hacer otra consulta .. q .. aunque sea rápida igual hay q hacerla .. cuando ya se ha hecho y mysql_num_rows() solo cuenta con lo q hay ..

Si necesitas SOLO el total y nada mas .. usa SQL

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 08:35.