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

Langage PHP Discussion :

résultats boucle foreach cumulés


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 210
    Points : 92
    Points
    92
    Par défaut résultats boucle foreach cumulés
    Bonjour,
    Je souhaite afficher les résultats d'une requête avec une boucle foreach. Il s'agit d'informations concernant des membres (nom, prénom...). Il y a un problème pour la ou les équipes auxquelles ils appartiennent.
    Pour le 1er membre c'est OK.
    Pour le 2ème : il s'affiche les équipes du 1er membre + celles du 2ème
    et ainsi de suite.
    Après des heures de recherches je pense qu'il s'agit d'un problème d'indexation du tableau des résultats mais je n'arrive pas à trouver une syntaxe correcte.
    En espérant que vous pourrez m'aider, je vous soumets mon code ci-dessous.
    Cordialement,
    Evelyne31

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $resultat = $base->query('
    SELECT ame.`ID_membre`, ame.`ID_equipe`, e.`ID_equipe`, e.`code_equipe` 
    FROM AS_MEMBRE_EQUIPE ame, EQUIPE e
    WHERE ame.`ID_equipe` = e.`ID_equipe`
    AND ame.`ID_membre` =  "'.$_SESSION['ID_membre'].'"
    ') or die($mysqli->error.__LINE__);			
    	while($row = $resultat->fetch()) { $arr[] = $row; } 
    	$recup = ($arr);
    foreach($recup as $evenement) { echo "<font color=#993333>$evenement[code_equipe] ; </font>"; }
    Un print_r des variables $arr et $ recup pour le 2ème membre (ID 3) donnent bien les résultats attendus mais également ceux du membre précédent (ID 36) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Array ( 
    [0] => Array ( [ID_membre] => 36 [0] => 36 [ID_equipe] => 5 [1] => 5 [2] => 5 [code_equipe] => Archives [3] => Archives ) 
    [1] => Array ( [ID_membre] => 36 [0] => 36 [ID_equipe] => 6 [1] => 6 [2] => 6 [code_equipe] => PRBM [3] => PRBM ) 
     
    [2] => Array ( [ID_membre] => 3 [0] => 3 [ID_equipe] => 1 [1] => 1 [2] => 1 [code_equipe] => SMP3C [3] => SMP3C ) 
    [3] => Array ( [ID_membre] => 3 [0] => 3 [ID_equipe] => 2 [1] => 2 [2] => 2 [code_equipe] => RHAdAMANTE [3] => RHAdAMANTE ) 
    [4] => Array ( [ID_membre] => 3 [0] => 3 [ID_equipe] => 3 [1] => 3 [2] => 3 [code_equipe] => TERRAE [3] => TERRAE ) 
    [5] => Array ( [ID_membre] => 3 [0] => 3 [ID_equipe] => 4 [1] => 4 [2] => 4 [code_equipe] => Métal [3] => Métal ) 
    [6] => Array ( [ID_membre] => 3 [0] => 3 [ID_equipe] => 5 [1] => 5 [2] => 5 [code_equipe] => Archives [3] => Archives ) 
    [7] => Array ( [ID_membre] => 3 [0] => 3 [ID_equipe] => 6 [1] => 6 [2] => 6 [code_equipe] => PRBM [3] => PRBM ) 
    )

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    salut

    et comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $sql = <<<sql
    SELECT 
        ame.`ID_membre`, 
        ame.`ID_equipe`,  
        e.`code_equipe` 
    FROM 
        AS_MEMBRE_EQUIPE ame INNER JOIN EQUIPE e ON ame.`ID_equipe` = e.`ID_equipe`
    WHERE
        ame.`ID_membre` = {$_SESSION['ID_membre']}
    ORDER BY
        ame.`ID_equipe`
    sql;
     
    $stmt = $base->query($sql) or die ($mysqli->error.__LINE__);
    foreach ($stmt->fetchAll() as $v) {
        echo "<font color=#993333>{$v['code_equipe']}</font>";
    }

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    d'abord, il faudrait savoir si on parles de mysqli_ ou de PDO !

    • ->fetch(), ->fetchAll() : c'est du PDO
    • Sauf erreur, en mysqli, c'est ->fetch_array(), ->fetch_all(), non ?


    Ici, ce n'est pas clair.
    On a $base->query(...) et $mysqli->error()
    "Y'a comme un défaut..."

  4. #4
    Membre régulier
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 210
    Points : 92
    Points
    92
    Par défaut
    Bonjour et 1000 fois mercis rawsrc et jreaux62 pour vos réponses, depuis le temps que j'étais bloquée...
    J'ai testé la requête de rawsrc et c'est nickel, exactement ce que je souhaitais en vain.
    Donc mon problème est réglé mais je ne mets pas de suite en résolu. Je vais étudier le code de rawsrc et les remarques de jreaux62 et j'aurais sans doute des questions.
    Encore merci et à +
    Evelyne31

  5. #5
    Membre régulier
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 210
    Points : 92
    Points
    92
    Par défaut
    Bonsoir,
    Je reviens après avoir regardé :
    - le code de rawsrc : je ne connais pas cette structure de requête mais c'est clair. Je ne comprends pas l'absence de la boucle while ? Ni le début et la fin Mystère aussi pour les accolades autour de la variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {$_SESSION['ID_membre']}
    au lieu de l'habituel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "'.$_SESSION['ID_membre'].'"
    - la remarque de jreaux62 : faut-il remplacer à cet endroit mysqli par mysql ? Dans mon fichier de connexion, les erreurs sont bien gérées en PDO, mais ici dans une requête je ne vois pas ?

    Ce sont des détails pour comprendre car la requête fonctionne parfaitement.
    Merci par avance si vous pouviez me répondre.
    Evelyne31

  6. #6
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Ne t'en fait pas pour ça.

    est juste une syntaxe alternative pour définir un chaîne de caractères. Il s'agit de la syntaxe Heredoc dont l'avantage est de s'approcher au plus prés de ce que la chaîne donnera à l'affichage (notamment en ce qui concerne les sauts de ligne). Tu peux très bien la remplacer par un couple de double quotes ". À noter que le choix des délimiteurs dans la syntaxe heredoc est à la discrétion du programmeur (tant qu'il respecte la même syntaxe utilisée pour les noms de variables). Ainsi on peut tout-à-fait écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $var = <<<brontosaure
    ...
    brontosaure;
    {$_SESSION['ID_membre']}: dans une chaîne dans laquelle les variables sont interpolées (entre double quotes ou en Heredoc donc), l'usage des accolades permet de délimiter clairement ce qui est de la variable de ce qui ne l'est pas. Exemple: si j'écris echo "$var[3]"; vais-je afficher la quatrième lettre d'une chaîne de caractères nommée $var ou bien la chaîne de caractères contenue dans $var suivie de [3]? L'usage de l'accolades permet de lever cette ambiguïté (et de ne pas s'interroger d'ailleurs sur le comportement par défaut du parser PHP dans de telles situations).

    mysql_*** on oublie définitivement, cet ensemble de fonctions est obsolète et n'est plus supporté dans les versions récentes de PHP. Les deux alternatives possibles à cette ancienne extension sont soit mysqli, soit PDO. Il faut en choisir une des deux et s'y tenir.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  7. #7
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    À noter que le choix des délimiteurs dans la syntaxe heredoc est à la discrétion du programmeur (tant qu'il respecte la même syntaxe utilisée pour les noms de variables). Ainsi on peut tout-à-fait écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $var = <<<brontosaure
    ...
    brontosaure;
    juste pour préciser que pour certains IDE, le choix du délimiteur a son importance car il conditionne le comportement de l'éditeur.
    Je code sur PhpStorm depuis peu et par exemple le fait de délimiter mon bloc heredoc avec <<<sql, sql; fait que l'éditeur bascule automatiquement au sein du bloc en mode SQL.
    Pour le HTML c'est du gâteau : <<<html et html; et hop j'ai à disposition tout ce qui est faisable en html5 (ouverture et fermeture des tags, documentation mozilla, exemples...), idem pour <<<js et <<<css.
    Bref, j'adore. Avec mon précédent IDE Nusphere PHPEd tout était à la mano.

  8. #8
    Membre régulier
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 210
    Points : 92
    Points
    92
    Par défaut
    Bonsoir e† merci CosmoKnacki & rawsrc d'avoir pris le temps de m'expliquer en détail.
    C'est beaucoup plus clair à présent pour moi, j'ai des lacunes car je ne suis pas professionnelle ! mais c'est super.
    Je peux mettre résolu en espérant que ce sujet serve à d'autres membres.
    Bonne continuation,
    Evelyne31

  9. #9
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Citation Envoyé par rawsrc
    Je code sur PhpStorm depuis peu et par exemple le fait de délimiter mon bloc heredoc avec <<<sql, sql; fait que l'éditeur bascule automatiquement au sein du bloc en mode SQL.
    Intéressant, mais pour ma part l'IDE que j'utilise n'offre pas cette fonctionnalité. Ce n'est pas très grave vu que je ne fais jamais d'erreurs et que la coloration syntaxique et autres gadgets ne sont qu'obstacles entre mon âme et celle du code. Et puis tout de même, PHPStorm est payant!
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  10. #10
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    Ce n'est pas très grave vu que je ne fais jamais d'erreurs et que la coloration syntaxique et autres gadgets ne sont qu'obstacles entre mon âme et celle du code.
    Carrément ! Entre ton âme et le code.

    Et alors, si tu fais une boulette (je sais que cela ne t'arrive jamais, mais juste au cas où ), tu ramasses quoi ? Du vague à l'âme ? Une dépression ? Ou une envie de suicide ?
    Ou, ou, ou... tu dis que c'est la faute des collègues ?

  11. #11
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 383
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    je ne fais jamais d'erreurs
    Si je pouvais en dire autant, les poules auraient des dents...

    Citation Envoyé par Evelyne31 Voir le message
    j'ai des lacunes car je ne suis pas professionnelle !
    Même certains professionnels en font...(je suis un bon exemple)
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Si je pouvais en dire autant, les poules auraient des dents...
    Mais Laurent, les poules AVAIENT des dents !
    Aux temps des dinosaures !


    Ce qui n'est pas prouvé, c'est qu'elles les ont perdues à cause de toi !

  13. #13
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 383
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Sûr que non, car je n'étais pas né...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  14. #14
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Ou, ou, ou... tu dis que c'est la faute des collègues ?
    Exactement, je désigne un coupable au hasard et je le tabasse façon Punisher!
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

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

Discussions similaires

  1. trier les résultats d'une boucle "foreach"
    Par cozy_cookie dans le forum Langage
    Réponses: 2
    Dernier message: 31/08/2010, 13h18
  2. [Tableaux] Boucle foreach inbriquée
    Par nebil dans le forum Langage
    Réponses: 17
    Dernier message: 10/09/2006, 11h40
  3. [C# VS 2005] Collection et boucle foreach
    Par SDragon dans le forum Windows Forms
    Réponses: 3
    Dernier message: 24/07/2006, 19h43
  4. [C# 1.1]Boucles foreach imbriquees
    Par Nip dans le forum Windows Forms
    Réponses: 12
    Dernier message: 13/04/2006, 16h35
  5. [Tableaux] la boucle foreach
    Par jeanfrancois dans le forum Langage
    Réponses: 7
    Dernier message: 09/03/2006, 17h29

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