variable écrasée à chaque tour de boucle

Petit nouveau ! | 5 Messages

14 juin 2011, 17:11

Bonjour,

J'ai un soucis de variable. J'ai écris une boucle dans laquelle je veux récupérer les identifiant de mes plaques ($plateid). Le probléme c'est qu'en écrivant ça, ma variable est écrasée à chaque fois. Hors je veux pouvoir m'en resservir plus loin pour faire une requéte avec tout les identifiants incriminés. Mais je ne vois pas comment faire. Quelqu'un pourrait-il m'aider?

Voici ma boucle :

Code : Tout sélectionner

$sql="select * FROM t_plate where project='$projectid';"; $rs=pg_exec($idc,$sql); $cpt=0; while ($lgr=pg_fetch_assoc($rs)) { $plateid =$lgr['plate_id']; print("$plateid<br>"); $cpt++; }

Merci d'avance :-)
i believe i can fly.... BOUM!! ^^

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 juin 2011, 18:25

Au lieu de mettre tes valeurs dans une variable, il faudrait les mettre dans un tableau. Tu pourrais ainsi ajouter tes plaque dans ton tableau à chaque itération et récupérer un tableau rempli en sortant du while :)
$plateTab = array();
while ($lgr=pg_fetch_assoc($rs)) {
         $plateid =$lgr['plate_id']; 
         print("$plateid<br>");
         $plateTab[] = $plateid;
         $cpt++;
}

print_r($plateTab);
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

devlop78
Invité n'ayant pas de compte PHPfrance

14 juin 2011, 23:26

Ou plutot simple

$lgr=pg_fetch_all($rs)

Invité
Invité n'ayant pas de compte PHPfrance

15 juin 2011, 10:42

J'ai tout mis dans un tableau, effectivement je récupére tout mes identifiants. Merci beaucoup :-)

Mais j'ai un autre probléme. J'avais fait une requête qui me permettais de récupérer un identifiant de plaque afin d'afficher plus tard toutes les informations sur celle-ci. ça marche mais en ne récupérant que la derniére plaque (ce qui est normal puisque j'ai construit ma requête avec $plateid, il ne peut donc récupérer que la derniére valeur de cette variable). Maintenant je voudrais récupérer toutes les valeurs de mon tableau pour faire la même chose. Je ne vais pas remplacer $plateid par $plateTab ça ne marchera pas, mais je ne vois pas trop comment faire. Il me faut plusieurs requêtes? Ou je peux tout faire dans la même ?


Voilà ma requête de départ :

Code : Tout sélectionner

$sql="select * FROM t_result where plate_id=$plateid ORDER BY result_id;"; $rs=pg_exec($idc,$sql);

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 juin 2011, 11:18

salut,

(j'avoue j'ai pas tout relue)

solution 1 : si c'est toute la table, vire juste la condition sur le plate_id (donc le where au final)

solution 2 : tu ne veux que celle dans le tableau $plateTab, dans ce cas tu va pouvoir tuiliser le IN de SQL

$sql = 'select * FROM t_result where plate_id in ('. inplode(',',$plateTab).' ) ORDER BY result_id;';

edit : j'ai oublié un p'tit lien vers de la doc ;) => http://sqlpro.developpez.com/cours/sqla ... es/#L1.2.1


@+
Il en faut peu pour être heureux ......

Invité
Invité n'ayant pas de compte PHPfrance

15 juin 2011, 14:54

J'ai utilisé la 2éme solution vu que mes identifiant vont changer à chaque demande de l'utilisateur. Merci beaucoup pour l'aide et pour la doc ;-)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 juin 2011, 15:00

de rien :)

(clique sur résolu, si c'est la cas, ça pourra p'tet aider quelqu'un d'autre ;) )


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 5 Messages

15 juin 2011, 15:13

A oui, par contre la fonction c'est "implode" avec un "m" et non un "n"^^ Merci encore ;-)
i believe i can fly.... BOUM!! ^^