Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework
Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/11/2006, 11h28   #1
Membre habitué
 
Inscription : février 2004
Messages : 161
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2004
Messages : 161
Points : 114
Points : 114
Par défaut Nombre de lignes renvoyées par un SELECT

Bonjour à tous,

J'aurais voulu savoir comment faire pour connaitre le nombre de ligne que renvoie une requete select via le framework zend.

Faut il que je fasse 2 requete : une count et l'autre select ou une seule peut elle suffire ?

Je ne suis pas sure d'avoir été très claire mais j'espère que vous pourrez quand meme me répondre.

Merci d'avance à tous!!
eowene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2006, 11h56   #2
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
je ne connait pas du tout le framework zend, mais est-ce que tu ne pourrai pas attribuer ton select à une variable (qui serait donc un tableau), puis faire un count() sur ce tableau ?
__________________
Globalement inoffensif
Merci de respecter les règles du forum.
Aucune question technique par MP !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2006, 14h06   #3
Membre habitué
 
Inscription : février 2004
Messages : 161
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2004
Messages : 161
Points : 114
Points : 114
C'est possible.
Finalement j'ai fait une requete count à part.
Merci quand meme
eowene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 10h25   #4
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 82
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : septembre 2006
Messages : 82
Points : 31
Points : 31
Je me permet de relancer le sujet puisque je me trouve confronter au même soucis !

Je souhaiter connaitre le nombre de lignes contenues dans un table en faisant un "SELECT COUNT(*) FROM table"

Mais lorsque je fait la requete, j'ai cette remarque:
"Notice: Object of class Zend_Db_Statement_Pdo could not be converted to int..."

La solution de faire un count sur le fetchAll de la requête est faisable mais je pense que la première solution est moins gourmande en ressources...

Quelqu'un a une suggestion ?

Devil Shark est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 10h54   #5
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 17
Points : 11
Points : 11
Bonjour,

on ne peut pas mélanger un count et récupérer toutes les lignes d'une requête . On peut regrouper les colonnes lors d'un count(*) avec GROUP BY et HAVING.

En revanche pour faire un count dans le framework :

Code :
1
2
3
4
5
6
 
//Select 
 $select = $this->db->select()
   	                   ->from( 't_table', array('nb'=>'count(*)'));
//data
$data = $this->db->fetchAll($select);
L'objet Select donne comme requête :
SELECT count(*) AS `nb` FROM `t_table`

J'espere que ça peut vous aider
_julz_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 11h04   #6
Membre chevronné
 
Avatar de |PaRa-BoL
 
Inscription : novembre 2003
Messages : 737
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : novembre 2003
Messages : 737
Points : 782
Points : 782
Ca m'étonnerais que le framework de zend ne puisse pas faire un mysql_num_rows...

Arrêtez avec vos COUNT(*), inutile de surcharger votre serveur MySQL quand on peux faire plus simple et plus légé.
__________________
http://www.ape-project.org/
|PaRa-BoL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 12h09   #7
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 17
Points : 11
Points : 11
je suis d'accord avec toi sur le mysql_num_rows , mais dans le cas du framework, on doit rendre l'application la plus autonome possible de la base de donnée, d'où l'utilisation de pdo.

Certes count(*) consomme , il sufit de remplacer '*' par le nom de sa clef primaire pour gagner en perf

Dans tous les cas si on souhaite connaitre le nombre de lignes et récupérer les infos :

on fait un fetchall de la requete qui renvoie toutes les lignes dans un rowset
Et on a plus quà les compter avec un count($rowset)
_julz_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 09h42   #8
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 82
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : septembre 2006
Messages : 82
Points : 31
Points : 31
D'abord merci pour les réponses.

En fouillant un peu et parès des dizaines d'essais j'ai finit par trouver une (bonne?) solution : je créer une nouvelle classe héritée de celle de ZF qui contient:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?php
 
class Bhp_DbTable extends Zend_Db_Table
{
	function count()
    {
        // Selection des outils
        $select = $this->_db->select();
 
        // Définition de la close FROM
        $select->from($this->_name, 'COUNT(*)', $this->_schema);
 
	    // Retour du résultat
        $count = $this->getAdapter()->fetchOne($select);
        return  $count;
	}
}
Le tour est joué !
Devil Shark est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h13.


 
 
 
 
Partenaires

Hébergement Web