Précédent   Forum du club des développeurs et IT Pro > PHP > PHP & SGBD > PHP & PostgreSQL
PHP & PostgreSQL Forum d'entraide sur PostgreSQL avec PHP. Avant de poster -> FAQ PostgreSQL, Cours PostgreSQL. Pour les questions concernant le moteur PostgreSQL plutôt que les fonctions PHP, merci d'utiliser le forum PostgreSQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 25/10/2012, 15h52   #1
Pathoche
Invité régulier
 
Femme Pat Hoche
Développeur informatique
Inscription : octobre 2012
Messages : 20
Détails du profil
Informations personnelles :
Nom : Femme Pat Hoche
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : octobre 2012
Messages : 20
Points : 7
Points : 7
Par défaut Parcours d'array et boucle while

Bonjour à tous.

Bon voila le souci. Je n'arrive pas à parcourir deux fois de suite le même array.
Je m'explique :

J'ai le résultat d'une requête comme ça :
Code :
$result=pg_query($connection, $requete);
qui me renvois un certain nombre de lignes sur disons 10 colonnes (ou champs).

Je parcours ce résultat une première fois en utilisant les 5 premières colonnes pour construire un tableau.
Code :
1
2
3
4
5
 
while ($arr = pg_fetch_array($result))
{
<table> .........</table>
}
Jusque là, ça va bien.

Plus loin dans ma page, je veux reparcourrir ce même résultat pour construire un deuxième tableau avec cette fois les cinq dernières colonnes.
Je fait donc la même chose que précédemment ;
Code :
1
2
3
4
5
 
while ($arr =  pg_fetch_array($result))
{
<table> .........</table>
}
Et là, c'est le drame. Mon deuxième tableau est vide.
Si je supprime le bout de code code qui remplis le premier, le deuxième se remplis correctement.

D’où j'en conclu qu'une fois l'array parcourus avec la boucle while, il reste "coincé" sur le dernier élément et ne reviens pas au début pour être parcourus une deuxième fois.

Comment puis-je le reparcourir sans relancer une deuxième fois la même requête ?
Pathoche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2012, 16h24   #2
Celira
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 4 280
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java
Secteur : Industrie

Informations forums :
Inscription : avril 2007
Messages : 4 280
Points : 8 409
Points : 8 409
Tu peux replacer le pointeur de résultat à 0 avant de le parcourir pour la 2e fois en utilisant pg_result_seek.

EDIT : Prem's!
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [CODEINLINE=php][/CODEINLINE]
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2012, 16h27   #3
rawsrc
Modérateur
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 2 599
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 36
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 2 599
Points : 6 116
Points : 6 116
Envoyer un message via Skype™ à rawsrc
Salut,

pour parcourir une seconde fois ton résultat, tu dois réinitialiser le pointeur interne en faisant :
Code :
pg_result_seek($result, 0)
Sinon, il est possible de créer le contenu des 2 tableaux en une seule passe :
Code :
1
2
3
4
5
while($row = pg_fetch_array($result)) {
    $table1[] = ...;
    $table2[] = ...;
}
echo '<table>', implode("\n", $table1), '<table>', '<table>', implode("\n", $table2), '<table>'
EDIT : grilled !
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2012, 23h11   #4
Pathoche
Invité régulier
 
Femme Pat Hoche
Développeur informatique
Inscription : octobre 2012
Messages : 20
Détails du profil
Informations personnelles :
Nom : Femme Pat Hoche
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : octobre 2012
Messages : 20
Points : 7
Points : 7
Merci, je ne connaissais pas pg_result_seek.
J'essaierais ça demain.

@ Celira : J'ai posté dans PHP parce que je pensais plus à un problème de la boucle while avec le parcours d'un tableau qu'au pointeur inetrne de pg.
Pathoche est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 00h02.


 
 
 
 
Partenaires

Hébergement Web