Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-01-2012 16:49:32

waghanza
Nouveau membre
Lieu: Paris
Date d'inscription: 09-01-2012
Messages: 3
Site web

Ajouter une columne à la volée (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
SELECT mes_champs, SQL_CALC_FOUND_ROWS * FROM ...

Hors ligne

 

#2 09-01-2012 17:03:17

r.monceau
Membre
Date d'inscription: 02-11-2009
Messages: 59

Re: Ajouter une columne à la volée (en première position)

Voila une idée mais je ne sais pas si elle fonctionne.

Mon $select est un objet Zend_Db_Select

Code:

$columns = $select->getPart(Zend_Db_Select::COLUMNS);
$select->reset(Zend_Db_Select::COLUMNS);

$select->addColumns(new Zend_Db_Expr('SQL_CAL_FOUN_ROWS'));
$select->addColumns($columns);

Hors ligne

 

#3 09-01-2012 17:20:29

waghanza
Nouveau membre
Lieu: Paris
Date d'inscription: 09-01-2012
Messages: 3
Site web

Re: Ajouter une columne à la volée (en première position)

La méthode addColumns() n'existe pas
donc je suis obligé d'utiliser columns()
si je fais ça mon select ressemble à ça
SELECT SQL_CAL_FOUND_ROWS, a.Array, a.Array, a.Array, a.Array, a.Array, a.Array, a.Array, a.Array FROM ....

Hors ligne

 

#4 09-01-2012 17:30:25

r.monceau
Membre
Date d'inscription: 02-11-2009
Messages: 59

Re: Ajouter une columne à la volée (en première position)

Oui columns autant pour moi.

Qu'est-ce que tu récupères comme objets du getPart ?

Hors ligne

 

#5 10-01-2012 10:08:44

waghanza
Nouveau membre
Lieu: Paris
Date d'inscription: 09-01-2012
Messages: 3
Site web

Re: Ajouter une columne à la volée (en première position)

Un tableaux de tableaux

Code:

[lang=php]array(7) {
  [0]=>
  array(3) {
    [0]=>
    string(1) "table1"
    [1]=>
    string(11) "champ1"
    [2]=>
    NULL
  }
  [1]=>
  array(3) {
    [0]=>
    string(1) "table1"
    [1]=>
    string(5) "champ2"
    [2]=>
    string(8) "alias2"
  }
  [2]=>
  array(3) {
    [0]=>
    string(1) "table1"
    [1]=>
    string(10) "champ3"
    [2]=>
    string(3) "alias3"
  }
  [3]=>
  array(3) {
    [0]=>
    string(1) "table1"
    [1]=>
    string(10) "champ4"
    [2]=>
    string(4) "alias4"
  }
}

Dernière modification par waghanza (10-01-2012 10:09:47)

Hors ligne

 

#6 10-01-2012 10:39:10

r.monceau
Membre
Date d'inscription: 02-11-2009
Messages: 59

Re: Ajouter une columne à la volée (en première position)

Arf pas terrible mon idée du coup..
J'ai l'impression qu'il est nécessaire que ton tableau soit sous la forme array($alias => $value) avant de le passer à la méthode columns. Encore moins propre que prévu pour le coup.
Par contre, je suis un peu surpris que ce que l'on récupère via le getPart() ne soit pas réutilisable par la suite.

J'espère que d'autres personnes ont de meilleures idées ^^

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