Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Contar el numero de elementos de una consulta (https://www.clubdelphi.com/foros/showthread.php?t=35919)

papulo 26-09-2006 17:13:59

Contar el numero de elementos de una consulta
 
Uso firebird, quiero hacer esto que se hace con

Código PHP:

 mysql_num_rows ($Cosulta); 

¿Hay alguna instruccion directa o tengo que hacerlo de forma "artesanal"?

Saludos y hola de nuevo a todos, que he estado de vacaciones unas semanas y se ha notado.

PD: Edito para decir, que lo que hace es contarme el numero de filas que me tiene la consulta que he ejecutado.

Quiero que si me devuelve mas de 20 resultados no muestre mas por pantalla.

papulo 27-09-2006 13:38:37

AAAARRIBAAAAA!!

Necesito ayuda,jops.

De los masters del universo (del PHP ...*cof! *cof! Dec! *cof!) que por aquí se que hay.


PD:En realidad de todos, pero cuando pienso en PHP, me viene Dec a la cabeza.

vtdeleon 27-09-2006 14:25:25

Saludos

No estoy muy pulido, pero prueba con Ibase_fetch_row().

Casimiro Notevi 27-09-2006 14:44:52

Si la consulta es de varios campos de una tabla y condicionada con where y lo que sea, entonces no podrás hacerlo.
Si son todos los campos, lo haces con un simple count.
Esa sentencia (mysql_num_rows ($Cosulta);) que indicas creo que lo que hace es ir al último registro para poder saber los que hay, es como si hicieras el select, luego haces un .last para ejecutar el recordcount y seguidamente vas al principio .first

roman 27-09-2006 16:13:29

MySql tiene dos formas de mandar los resultados al cliente: de uno a uno o en bonche todos juntos. Hasta donde tengo entendido, PHP usa la segunda forma, de manera que siempre se sabe cuántos registros hay y por ello puede usarse mysql_num_rows. Si en IB noexiste tal función, me supongo que es porque sólo se mandan los resultados de uno a uno y por ello no puede saberse cuántos hay sino hasta que se han recorrido todos.

No entiendo muy bien porque Casimiro menciona que no se puede usarse count si hay una cláusula where o varios campos. Pienso que se puede saber la cantidad de registros haciendo una consulta COUNT previa con las mismas condiciones que la consulta original. Si bien es una consulta extra, normalmente debe ser bastante rápida y tratándse de un sólo dato el envío al cliente es muy rápido también así que imagino que casi no se notaría.

// Saludos

papulo 02-10-2006 10:40:36

Al final, el tema era saber el numero de resultados que me devolvía la consulta realizada y si pasaba de 30, dejar de mostrarlos en pantalla, por lo que en la condicion
Código PHP:

while (($fila ibase_fetch_object ($consulta)) or ($max_request<=30))
{


y arreando, cuando pasa de 30 registros deja de mostrarlos y directamente muestra un mensaje.

Gracias por la ayuda, la idea del count se me había pasado por la cabeza, me parecía la mas lógica aunque no se si la mas eficiente.

Casimiro Notevi 02-10-2006 10:57:19

Cita:

Empezado por roman
[...]
No entiendo muy bien porque Casimiro menciona que no se puede usarse count si hay una cláusula where o varios campos. Pienso que se puede saber la cantidad de registros haciendo una consulta COUNT previa con las mismas condiciones que la consulta original. Si bien es una consulta extra, normalmente debe ser bastante rápida y tratándse de un sólo dato el envío al cliente es muy rápido también así que imagino que casi no se notaría.
// Saludos

Sólo quería decir que si tiene ya un select "normal" con sus campos y condicionantes normales, no puede añadirle al mismo el count para hacerlo de una sóla vez.
No sé... por ejemplo:
Código:

select tar.*, per.codigoregistro
from tbTareas tar
inner join tbPersonal per on (per.codigo=tar.dependiente)
where tar.Codigo= 13
order by tar.fechainicio

Ahí no puedes añadir el count, tendría que ejecutar una sentencia adicional para contarlos.
Esto es suponiendo que yo hubiese entendido bien la pregunta. :)

dec 02-10-2006 15:39:42

Hola,

Cita:

Empezado por Papulo
De los masters del universo (del PHP ...*cof! *cof! Dec! *cof!) que por aquí se que hay.

PD:En realidad de todos, pero cuando pienso en PHP, me viene Dec a la cabeza.

:eek: :D :) :cool:


La franja horaria es GMT +2. Ahora son las 00:34:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi