Page 1 sur 1

Passage de variables

Posté : 18 janv. 2006, 11:33
par George Abitbol
Bonjour,

J'ai l'impression que ma question va etre stupide, mais comme je n'y arrive pas, je demande.

J'utilise le package DB de Pear.
J'ai une fonction genre :

Code : Tout sélectionner

function query_select($query, $fetchmode) { [...] //On recupere les donnees dans un tableau $data = $db->getAll($query, array(), $fetchmode); [...] }
et du code genre :

Code : Tout sélectionner

[...] $query = 'SELECT * FROM bidule'; $fetchmode = 'DB_FETCHMODE_ASSOC'; query_select($query, $fetchmode) [...]
Donc mon problème se situe au niveau du fetchmode dans le getAll, la syntaxe ressemble à ça (d'après la doc):

Code : Tout sélectionner

$data = $db->getAll('SELECT cf, nf, df FROM foo', array(), DB_FETCHMODE_ASSOC);
Donc le paramètre fetchmode de getAll, ce n'est pas une chaine de caractère, c'est pas un numérique, je sais pas ce que c'est, et du coup j'arrive pas le faire passer dans la fonction et donc forcement ça ne marche pas, mais quand je le mets directement en dur dans la fonction getAll, ça fonctionne.
Donc j'ai essayé :
$fetchmode = 'DB_FETCHMODE_ASSOC' (opu avec " ") ou $fetchmode = DB_FETCHMODE_ASSOC, mais rien.

Je ne sais pas si j'ai, été très clair, mais si quelqu'un çà compris et sait comment faire, je serais ravi de les avoir aussi.

Merci d'avance !

Posté : 18 janv. 2006, 12:59
par IDNoires
DB_FETCHMODE_ASSOC est une constante pas une chaine de caractères.
Essaie :
$fetchmode = DB_FETCHMODE_ASSOC; 
oups pardon j'édite... j'ai vu que tu avais déja essayé...
il faut que ton programme connaisse la constante avant de l'utilisé.
Procéde alors à l'include de la classe PEAR DB avant l'appel à ta fonction query_select.

Posté : 18 janv. 2006, 15:01
par George Abitbol
Merci !

Mais en fait c'est pas ça non plus... Et je pense avoir trouvé le problème, mais pourquoi ça fait ça, j'en sais rien...

Voilà ma vraie fonction :

Code : Tout sélectionner

function query_select($select, $from, $where = '', $order = '', $fetchmode = '') { [...] //On recupere les donnees dans un tableau $data = $db->getAll($query, array(), $fetchmode); [...] }
Et donc, c'est juste que le dernier paramètre ne passe pas (donc là, $fetchmode, mais ca merde aussi avec les autres, $order et $where, s'ils sont en dernier). Et je ne sais pas pourquoi, peut-être à cause de l'initialisation dans la déclaration (= '') ?

Merci encore pour ta réponse.

Posté : 18 janv. 2006, 15:21
par George Abitbol
Bon en fait c'est bon...
C'est moi qui me suis planté en appelant ma fonction...