Imbriquer foreach et while
Résolu/Fermé
mont_dani
Messages postés
232
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
7 mai 2024
-
9 juin 2022 à 07:38
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 - 11 juin 2022 à 07:36
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 - 11 juin 2022 à 07:36
A voir également:
- Imbriquer foreach et while
- While fscanf ✓ - Forum C
- Foreach mysql ✓ - Forum MySQL
- Get-appxpackage -allusers | foreach {add-appxpackage -disabledevelopmentmode -register “$($_.installlocation)appxmanifest.xml”} - Forum Windows 8 / 8.1
- Si et ou imbriqué - Guide
- Factorielle python while ✓ - Forum Programmation
6 réponses
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
Ambassadeur
1 550
9 juin 2022 à 08:26
9 juin 2022 à 08:26
bonjour,
peux-tu donner suite, ou marquer comme résolues, les autres discussions que tu laisses ouvertes?
peux-tu donner suite, ou marquer comme résolues, les autres discussions que tu laisses ouvertes?
mont_dani
Messages postés
232
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
7 mai 2024
9 juin 2022 à 20:54
9 juin 2022 à 20:54
Vu que je n'arrive pas au bon résultat avec les requettes, j'essai de la faire en php.
pouvez-vous me dire ou est mon erreur? Merci.
$an = "2022"; $sqlQuery_pais1 = 'SELECT ANNEE, PAYS, TOTAL FROM resultat WHERE ANNEE ='.$an.' LIMIT 1'; $recipesStatement_pais1 = $db->prepare($sqlQuery_pais1); $recipesStatement_pais1->execute(); $recipes_pais1 = $recipesStatement_pais1->fetchAll(); $sqlQuery_pais2 = 'SELECT ANNEE AS ANNEE2, PAYS AS PAYS2, TOTAL AS TOTAL2 FROM resultat WHERE ANNEE ='.$an.' LIMIT 2,1'; $recipesStatement_pais2 = $db->prepare($sqlQuery_pais2); $recipesStatement_pais2->execute(); $recipes_pais2 = $recipesStatement_pais2->fetchAll(); ?> <p id="pais" class="mes">NB PEREGRINOS POR PAIS</p><br> <table class="meteo"> <tr class="meteo" > <th class="meteo">ANNEE</th> <th class="meteo">PAIS 1</th> <th class="meteo">TOTAL 1</th> <th class="meteo">PAIS 2</th> <th class="meteo">TOTAL 2</th> </tr> <tr class="meteo"> <?php // On affiche chaque donnée une à une foreach ($recipes_pais1 as $recipe_pais1) { ?> <td class="meteo"><?php echo $recipe_pais1['ANNEE']; ?></td> <td class="meteo"><?php echo $recipe_pais1['PAYS'];?></td> <td class="meteo"><?php echo $recipe_pais1['TOTAL'];?></td> //QUAND JE MET CETTE PARTIE LA REQUETTE N'ABOUTIE PAS ET CONTINUE DE CHERCHER LES DONNEES. LA REQUETEASSOCIE EN SQL FONCTIONNE BIEN ET DONNE LE RESULTAT ESPÉRÉ <?php }; foreach ($recipes_pais2 as $recipe_pais2) { <td class="meteo"><?php echo $recipe_pais2['PAYS2'];?></td> <td class="meteo"><?php echo $recipe_pais2['TOTAL2'];?></td> }; ?> // FIN DE LA PARTIE </tr> <?php }; ?> </table><br>
pouvez-vous me dire ou est mon erreur? Merci.
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 550
9 juin 2022 à 20:57
9 juin 2022 à 20:57
Qu'as-tu ajouté à ton code afin de comprendre comment il se comportait?
mont_dani
Messages postés
232
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
7 mai 2024
10 juin 2022 à 09:14
10 juin 2022 à 09:14
Erreur corrigé: une } mal placée.
J'ai réssui a obtenir le passage de une colonne a ligne. je m'explique
annee pays total
2022 france 1500
2022 espagne 1325
2022 italie 1000
vers 2022 france 1500 espagne 1325 italie 1000
Maintenant je n'ai plus qu'a le faire pour toutes les années.
Le resulta n'est pas correct.
Affichage:
anne pays total anne pays total
2004 0 0 2005 0 0 2006 0 0 ect
resultat attendu
2022 france 1500 espagne 1325 italie 1000
2021 espagne 1325 italie 1000 france 950
2020 france 500 espagne 325 italie 250
Ou est mon erreur dans la boucle?
J'ai réssui a obtenir le passage de une colonne a ligne. je m'explique
annee pays total
2022 france 1500
2022 espagne 1325
2022 italie 1000
vers 2022 france 1500 espagne 1325 italie 1000
Maintenant je n'ai plus qu'a le faire pour toutes les années.
<p id="pais" class="mes">NB PEREGRINOS POR PAIS</p><br> <table class="meteo"> <tr class="meteo" > <th class="meteo">ANNEE</th> <th class="meteo">PAIS 1</th> <th class="meteo">TOTAL</th> </tr> <tr class="meteo"> <?php //Mes variables pour la boucle des année $an_debut = "2004"; //premiere annee stat $an_hoy = date('Y'); // annee courante for ($i = $an_debut; $i <= $an_hoy; $i++) { $z = array($i); foreach ($z as $an) { $sqlQuery_annee = 'SELECT ANNEE FROM resultat WHERE ANNEE ='.$an.' LIMIT 1'; $recipesStatement_annee = $db->prepare($sqlQuery_annee); $recipesStatement_annee->execute(); $recipes_annee = $recipesStatement_annee->fetchAll(); foreach ($recipes_annee as $recipe_annee) { ?> <td class="meteo"><?php echo $recipe_annee['ANNEE']; ?></td> <?php } $sqlQuery_pais1 = 'SELECT ANNEE, PAYS, TOTAL FROM resultat WHERE ANNEE ='.$an.' LIMIT 1'; $recipesStatement_pais1 = $db->prepare($sqlQuery_pais1); $recipesStatement_pais1->execute(); $recipes_pais1 = $recipesStatement_pais1->fetchAll(); foreach ($recipes_pais1 as $recipe_pais1) { ?> <td class="meteo"><?php echo $recipe_pais1['PAYS'];?></td> <td class="meteo"><?php echo $recipe_pais1['TOTAL'];?></td> <?php }; }; }; ?> </tr> </table><br>
Le resulta n'est pas correct.
Affichage:
anne pays total anne pays total
2004 0 0 2005 0 0 2006 0 0 ect
resultat attendu
2022 france 1500 espagne 1325 italie 1000
2021 espagne 1325 italie 1000 france 950
2020 france 500 espagne 325 italie 250
Ou est mon erreur dans la boucle?
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 550
10 juin 2022 à 11:05
10 juin 2022 à 11:05
je pense que tu peux remplacer
par
for ($i = $an_debut; $i <= $an_hoy; $i++) { $z = array($i); foreach ($z as $an)
par
for ($an = $an_debut; $an <= $an_hoy; $an++)
mont_dani
Messages postés
232
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
7 mai 2024
10 juin 2022 à 14:45
10 juin 2022 à 14:45
J'étais justement en train de el tester et ca fonctionne enfinnnnnnnnnnn...
mon resultat est:
Ou et comment je doit mettre une condition pour n'afficher qu'une seule fois chaque date?
mon resultat est:
Ou et comment je doit mettre une condition pour n'afficher qu'une seule fois chaque date?
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 550
10 juin 2022 à 14:55
10 juin 2022 à 14:55
Si tu as modifié ton code, il est utile de nous montrer ton nouveau code.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mont_dani
Messages postés
232
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
7 mai 2024
10 juin 2022 à 16:04
10 juin 2022 à 16:04
Oups le voici
<p id="pais" class="mes">NB PEREGRINOS POR PAIS</p><br> <table class="meteo"> <tr class="meteo" > <th class="meteo">ANNEE</th> <th class="meteo">PAIS 1</th> <th class="meteo">TOTAL</th> </tr> <?php $an_debut = "2004"; //premiere annee stat $an_hoy = date('Y'); // anne courante for ($an = $an_debut; $an <= $an_hoy; $an++) { $sqlQuery_annee = 'SELECT ANNEE FROM resultat WHERE ANNEE ='.$an.' '; $recipesStatement_annee = $db->prepare($sqlQuery_annee); $recipesStatement_annee->execute(); $recipes_annee = $recipesStatement_annee->fetchAll(); foreach($recipes_annee as $recipe_annee) { ?> <tr class="meteo"> <td class="meteo"><?php echo $recipe_annee['ANNEE']; ?></td> <?php }; $sqlQuery_pais1 = 'SELECT ANNEE, PAYS, TOTAL FROM resultat WHERE ANNEE ='.$an.' LIMIT 1'; $recipesStatement_pais1 = $db->prepare($sqlQuery_pais1); $recipesStatement_pais1->execute(); $recipes_pais1 = $recipesStatement_pais1->fetchAll(); foreach ($recipes_pais1 as $recipe_pais1) { ?> <td class="meteo"><?php echo $recipe_pais1['PAYS'];?></td> <td class="meteo"><?php echo $recipe_pais1['TOTAL'];?></td> <?php }; $sqlQuery_pais2 = 'SELECT ANNEE AS ANNEE2, PAYS , TOTAL FROM resultat WHERE ANNEE ='.$an.' LIMIT 1,1'; $recipesStatement_pais2 = $db->prepare($sqlQuery_pais2); $recipesStatement_pais2->execute(); $recipes_pais2 = $recipesStatement_pais2->fetchAll(); foreach ($recipes_pais2 as $recipe_pais2) { ?> <td class="meteo"><?php echo $recipe_pais2['PAYS'];?></td> <td class="meteo"><?php echo $recipe_pais2['TOTAL'];?></td> <?php }; $sqlQuery_pais3 = 'SELECT ANNEE AS ANNEE2, PAYS , TOTAL FROM resultat WHERE ANNEE ='.$an.' LIMIT 2,1'; $recipesStatement_pais3 = $db->prepare($sqlQuery_pais3); $recipesStatement_pais3->execute(); $recipes_pais3 = $recipesStatement_pais3->fetchAll(); foreach ($recipes_pais3 as $recipe_pais3) { ?> <td class="meteo"><?php echo $recipe_pais3['PAYS'];?></td> <td class="meteo"><?php echo $recipe_pais3['TOTAL'];?></td> <?php }; $sqlQuery_pais4 = 'SELECT ANNEE AS ANNEE2, PAYS , TOTAL FROM resultat WHERE ANNEE ='.$an.' LIMIT 3,1'; $recipesStatement_pais4 = $db->prepare($sqlQuery_pais4); $recipesStatement_pais4->execute(); $recipes_pais4 = $recipesStatement_pais4->fetchAll(); foreach ($recipes_pais4 as $recipe_pais4) { ?> <td class="meteo"><?php echo $recipe_pais4['PAYS'];?></td> <td class="meteo"><?php echo $recipe_pais4['TOTAL'];?></td> <?php }; $sqlQuery_pais5 = 'SELECT ANNEE AS ANNEE2, PAYS , TOTAL FROM resultat WHERE ANNEE ='.$an.' LIMIT 4,1'; $recipesStatement_pais5 = $db->prepare($sqlQuery_pais5); $recipesStatement_pais5->execute(); $recipes_pais5 = $recipesStatement_pais5->fetchAll(); foreach ($recipes_pais5 as $recipe_pais5) { ?> <td class="meteo"><?php echo $recipe_pais5['PAYS'];?></td> <td class="meteo"><?php echo $recipe_pais5['TOTAL'];?></td> <?php }; }; ?> </tr> </table><br>
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 550
10 juin 2022 à 18:58
10 juin 2022 à 18:58
Pourquoi as-tu supprimé le
LIMIT 1à la ligne 16?
mont_dani
Messages postés
232
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
7 mai 2024
11 juin 2022 à 07:36
11 juin 2022 à 07:36
BRAVO yg_be pour ta patience et pour me guider vers la solution. J'ai appris beaucoup avec les piste que tu m'a donné et avec toutes les recherches faites sur le net.
Pour le fun voici le resultat.
MERCI et je clos ce post.
Pour le fun voici le resultat.
MERCI et je clos ce post.