Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Db
Zend_Db Forum d'entraide pour le composant Zend_Db du Zend Framework (création de requêtes, abstraction, ORM etc.). Avant de poster -> FAQ Zend_Db.
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 09/01/2012, 16h51   #1
Membre éprouvé
 
Homme Marwan Rabbaa
Technophile Web
Inscription : mai 2007
Messages : 930
Détails du profil
Informations personnelles :
Nom : Homme Marwan Rabbaa

Informations professionnelles :
Activité : Technophile Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2007
Messages : 930
Points : 412
Points : 412
Envoyer un message via MSN à sliderman Envoyer un message via Yahoo à sliderman
Par défaut Ajouter une colonne à une requête (en première position

Bonjour,

Je voudrais créer une méthode qui :
- execute une requete SQL
- donne le nombre de résultat de cette requête SQL

Mon idée était d'ajouter en première position :
- requete 1 : SELECT SQL_CAL_FOUN_ROWS *, .... FROM ....
- requete 2 : SELECT FOUND_ROWS()

Mais voila le problème c'est que MySQL demande à ce que ce SQL_CALC_FOUND_ROWS soit la première colonne souhaitée
mais je ne sais pas comment ajouter SQL_CALC_FOUND_ROWS en tant que première colonne

Je sais comment ajouté une colonne à une requête (grâce à columns())
mais pas préciser la position

MySQL refuse que je fasse
Code :
SELECT mes_champs, SQL_CALC_FOUND_ROWS * FROM ...
__________________
http://aldorande.miniville.fr/ind
Fedora 8, eclipse 3.3 sur x86_64
--------------
Colorer votre code php
sliderman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 18h37   #2
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 680
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 680
Points : 1 044
Points : 1 044
Bonjour,
Peux tu nous donner un exemple concret de ce que tu veux faire ainsi que le résultat que tu souhaiterais avoir
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 10h05   #3
Membre éprouvé
 
Homme Marwan Rabbaa
Technophile Web
Inscription : mai 2007
Messages : 930
Détails du profil
Informations personnelles :
Nom : Homme Marwan Rabbaa

Informations professionnelles :
Activité : Technophile Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2007
Messages : 930
Points : 412
Points : 412
Envoyer un message via MSN à sliderman Envoyer un message via Yahoo à sliderman
En gros je voudrais faire deux requêtes (dans la même transaction).

- Une pour les résultat
- Une pour le nombre total

Requête 1 :

Code :
SELECT champ1, champ2 AS c, champ3 AS b, FROM .... WHERE (id = 324) AND (DATE(ts) = CURDATE())
Requête 2 :

Par contre, pour que la seconde requête fonctionne, je devrais rajouter un SQL_CALC_FOUND_ROWS en première position
Code :
SELECT SQL_CALC_FOUND_ROWS champ1, champ2 ... FROM ...
si je le rajoute en dernière position
Code :
SELECT champ1, champ2, SQL_CALC_FOUND_ROWS *... FROM ...
MySQL râle parce que la reque est syntaxiquement incorrecte
__________________
http://aldorande.miniville.fr/ind
Fedora 8, eclipse 3.3 sur x86_64
--------------
Colorer votre code php
sliderman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 19h29   #4
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 680
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 680
Points : 1 044
Points : 1 044
Ah ok mais as tu essayé cette requête directement dans ton SGBD afin de voir si c'est Zend ou non qui te limite.
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 18h04   #5
Membre éprouvé
 
Homme Marwan Rabbaa
Technophile Web
Inscription : mai 2007
Messages : 930
Détails du profil
Informations personnelles :
Nom : Homme Marwan Rabbaa

Informations professionnelles :
Activité : Technophile Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2007
Messages : 930
Points : 412
Points : 412
Envoyer un message via MSN à sliderman Envoyer un message via Yahoo à sliderman
oui, c'est MySQL qui ne veut pas que le SQL_CALC_FOUND_ROWS soit en premier

et la requête (dans la trame, donc celle qui est envoyé au serveur) n'est pas syntaxiquement correcte
__________________
http://aldorande.miniville.fr/ind
Fedora 8, eclipse 3.3 sur x86_64
--------------
Colorer votre code php
sliderman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 18h05   #6
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 680
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 680
Points : 1 044
Points : 1 044
Et si tu ne précise pas tes champs que tu indiques seulement * juste après le nom de fonction ?
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 17h58   #7
Membre éprouvé
 
Homme Marwan Rabbaa
Technophile Web
Inscription : mai 2007
Messages : 930
Détails du profil
Informations personnelles :
Nom : Homme Marwan Rabbaa

Informations professionnelles :
Activité : Technophile Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2007
Messages : 930
Points : 412
Points : 412
Envoyer un message via MSN à sliderman Envoyer un message via Yahoo à sliderman
pareil MySQL ne veut pas qu'il soit en dernier
__________________
http://aldorande.miniville.fr/ind
Fedora 8, eclipse 3.3 sur x86_64
--------------
Colorer votre code php
sliderman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 19h12   #8
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 680
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 680
Points : 1 044
Points : 1 044
Non mais en le mettant au début ça passe?
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 09h00   #9
Membre éprouvé
 
Homme Marwan Rabbaa
Technophile Web
Inscription : mai 2007
Messages : 930
Détails du profil
Informations personnelles :
Nom : Homme Marwan Rabbaa

Informations professionnelles :
Activité : Technophile Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2007
Messages : 930
Points : 412
Points : 412
Envoyer un message via MSN à sliderman Envoyer un message via Yahoo à sliderman
tout a fait en la mettant en premier ça passe
__________________
http://aldorande.miniville.fr/ind
Fedora 8, eclipse 3.3 sur x86_64
--------------
Colorer votre code php
sliderman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 13h04   #10
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 680
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 680
Points : 1 044
Points : 1 044
Bonjour,
Je pense que le plus simple pour toi est de créer ton propre Zend_Db_Select

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
class My_Db_Select extends Zend_Db_Select{
    public function columns($cols = '*', $correlationName = null, $afterCorrelationName = null)
    {
        if ($correlationName === null && count($this->_parts[self::FROM])) {
            $correlationNameKeys = array_keys($this->_parts[self::FROM]);
            $correlationName = current($correlationNameKeys);
        }
 
        if (!array_key_exists($correlationName, $this->_parts[self::FROM])) {
            /**
             * @see Zend_Db_Select_Exception
             */
            require_once 'Zend/Db/Select/Exception.php';
            throw new Zend_Db_Select_Exception("No table has been specified for the FROM clause");
        }
 
        $this->_tableCols($correlationName, $cols, $afterCorrelationName);
 
        return $this;
    }
}
Du coup, tu passe true en 3ème paramètre et cela devrait être bon
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h16.


 
 
 
 
Partenaires

Hébergement Web