IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Db PHP Discussion :

Ajouter une colonne à une requête (en première position


Sujet :

Zend_Db PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Bonjour,
    Peux tu nous donner un exemple concret de ce que tu veux faire ainsi que le résultat que tu souhaiterais avoir

  3. #3
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SQL_CALC_FOUND_ROWS champ1, champ2 ... FROM ...
    si je le rajoute en dernière position
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    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.

  5. #5
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut
    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

  6. #6
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Et si tu ne précise pas tes champs que tu indiques seulement * juste après le nom de fonction ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut
    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

  8. #8
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Non mais en le mettant au début ça passe?

  9. #9
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut
    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

  10. #10
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Bonjour,
    Je pense que le plus simple pour toi est de créer ton propre Zend_Db_Select

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/02/2021, 16h57
  2. MFC d'une colonne à une colonne et planning perpetuel
    Par mlegentil dans le forum Excel
    Réponses: 0
    Dernier message: 12/04/2014, 17h43
  3. [SP-2010] Ajouter une colonne : Webpart Requête de contenu
    Par sebfreu dans le forum SharePoint
    Réponses: 2
    Dernier message: 31/01/2012, 18h10
  4. Réponses: 0
    Dernier message: 08/08/2007, 12h13
  5. ajout d'une colonne à une position précise!
    Par kanko dans le forum Oracle
    Réponses: 5
    Dernier message: 27/03/2006, 22h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo