Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-06-2009 11:04:52

pnk
Nouveau membre
Date d'inscription: 11-06-2009
Messages: 2

[Zend_Db][1.8] Nombre d'enregistrement d'une requête

Bonjour,
Je souhaiterai compter le nombre d'enregistrements d'une requête avant de faire tout traitement sur les lignes de ma requete, et sans avoir à faire deux requêtes sur ma base (un SELECT ... et un SELECT COUNT...).
Par exemple

Code:

$resultat = $db->query($ma_requete);

echo(Nombre_d_enregistrement($resultat));

//Je traite resultat comme je le souhaite (fetchAll, getOne ...), sans avoir à relancer ma requete
...

Pour compter le nombre de résultats, j'avais penser utiliser la fonction  suivante:

Code:

function Nombre_d_enregistrement($res)
{
    count($resultat->fetchAll())
}

Le problème c'est que fetchAll, va faire un fetch sur toutes les lignes de mon objet résultat et du coup je ne peux pas faire :

Code:

$nbres = Nombre_d_enregistrement($resultat);

while($row = $resultat->fetch())
{
    //traitement ligne par ligne
}

Le fetch ne renvoie rien ,l'objet $resultat a déjà été "fetché" en entier avec la méthode fetchAll de ma fonction Nombre_d_enregistrement.

Je ne vois pas de solutions pour l'instant, je suis preneur de toute piste me permettant d'avancer.

D'avance, merci.

Dernière modification par pnk (11-06-2009 11:05:58)

Hors ligne

 

#2 11-06-2009 16:01:01

yoga20
Membre
Date d'inscription: 23-04-2009
Messages: 33

Re: [Zend_Db][1.8] Nombre d'enregistrement d'une requête

nbrRes=$row->count();

Hors ligne

 

#3 11-06-2009 16:48:44

pnk
Nouveau membre
Date d'inscription: 11-06-2009
Messages: 2

Re: [Zend_Db][1.8] Nombre d'enregistrement d'une requête

A quoi correspond la variable $row dans ton $row->count();

J'ai testé avec ma variable $resultat (type Zend_Db_Statement_Pdo) sans succès.

Hors ligne

 

#4 14-06-2009 08:41:51

Kaimite
Membre
Lieu: Marseille
Date d'inscription: 16-06-2008
Messages: 144
Site web

Re: [Zend_Db][1.8] Nombre d'enregistrement d'une requête

Salut,

Tu peux essayer 2 requêtes pour compter le nombre d'enregistrement :

Code:

function Nombre_d_enregistrement()
{
    $select = $this -> select() -> from($this -> _name, 'id');
    return count( $this -> fetchAll($select) );
}

Ainsi tu ne sélectionne que le champ id de ta table

Ou encore :

Code:

function Nombre_d_enregistrement()
{
    $select    = $this -> select() -> from( $this -> _name, array( 'nbRows' => 'COUNT(`id`)' ) );
    $row     = $this -> fetchRow($select);
    return $row['nbRows'];
}

Il semblerais que la 2eme solution soit plus optimisée...

@++
Kaimite

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages