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

PHP & Base de données Discussion :

while --> foreach [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Par défaut while --> foreach
    Bonjour à tous,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $Resultat = mysql_query('SELECT date, hipo FROM recup_t ORDER BY date , hipo');
    while ($row=mysql_fetch_array($Resultat)) 
    {
    ...
    }
    Comment remplacer le while par un foreach ?

    Je suis en PHP 4

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Le foreach est dans le While car à chaque lecture, $row est un tableau ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while ($row=mysql_fetch_array($Resultat)) 
    {
    foreach ($row as $value)
    ...
    }

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Par défaut
    Bonsoir Fench,

    je croyais que le foreach était plus rapide que le while !

  4. #4
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Citation Envoyé par malabarbe Voir le message
    Bonsoir Fench,

    je croyais que le foreach était plus rapide que le while !
    Bonsoir,
    non ce n'est pas ce qu'il veut dire. En fait mysql_fetch_array renvoie un seul tableau, contenant, pour chaque occurence, une colonne de l'une ligne de ta base de données. À chaque fois que le contenu du while est executé, mysql_fetch_array renvoie l'enregistrement suivant.

    Tout çà pour dire que, comme l'explique Fench, lorsque tu fais un foreach sur le résultat de mysql_fetch_array, tu parcours les colonnes d'une ligne renvoyées par ton jeu de résultat.

    Si tu souhaites enregistrer tes lignes dans un tableau pour les réexploiter ensuite, tu peux faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function get_records(){
        $recordset = array();
        $q = mysql_query('SELECT * FROM matable');
        while($r = mysql_fetch_array($q)){
            $recordset[] = $r;
        }
        return $recordset;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $records = get_records();
    foreach($records as $k => $v){
        echo $k. ' : '.$v.'<br/>';
    }
     
    echo count($records);

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Par défaut
    Bonjour ThomasR,

    la ligne : echo $k. ' : '.$v.'<br/>';

    M'affiche pour $k l'incrémentation

    Mais le $v m'affiche : array

    Par contre le : echo count($records);

    Me retourne bien le nombre d'occurences.

    Si tu peut y jetter un oeil.

  6. #6
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Citation Envoyé par malabarbe Voir le message
    Bonjour ThomasR,

    la ligne : echo $k. ' : '.$v.'<br/>';

    M'affiche pour $k l'incrémentation

    Mais le $v m'affiche : array

    Par contre le : echo count($records);

    Me retourne bien le nombre d'occurences.

    Si tu peut y jetter un oeil.
    Ca affiche array car la valeur contient un tableau dont chaque occurence est une colonne :

    J'aurais dû écrire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $records = get_records();
    foreach($records as $k => $v){
        echo $k. ' : '.implode(', ', $v).'<br/>';
    }
     
    echo count($records) . ' enregistrements';

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. affichage de sous requette avec foreach et while
    Par keusty78 dans le forum Langage
    Réponses: 11
    Dernier message: 17/10/2009, 12h42
  2. [MySQL] Erreur boucle while et foreach
    Par tiesto95 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/01/2009, 12h01
  3. [MySQL] Foreach avec un while inclu
    Par thibaud28 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/06/2008, 13h58
  4. while vs foreach var list (@toto)
    Par nkdb dans le forum Langage
    Réponses: 7
    Dernier message: 08/12/2006, 21h55
  5. [MySQL] Foreach ou while ?
    Par Pahcixam dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 31/08/2006, 07h59

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