Bonjour, je suis un peu nouvelle dans la programmation et je développe en PHP et html et javascript. Je rencontre un soucis avec mon foreach. dans mon foreach, je parcours un tableau de couverture en php et pour chaque couverture, je veux qu'il recupère les données dans la BDD en javascript mais le problème c'est qu'il recupère juste les données du dernier élément du tableau.
voici mon code :
[/code][/code]
Du coup, la il va exécuter tout ce qu'il y'a dans me foreach mais juste pour le dernier élément du tableau et pourtant dans mon console.log('couverture', typeCouverture), tous les éléments sont affichés.
Je vous prie de m'aider svp.
Modifié par Ivanna (18 Mar 2021 - 12:05)
voici mon code :
[code=php][code=html]<?php
for($i=0; $i < count($tableauAffichage); $i++) {
?>
var typeCouverture = '<?PHP echo $tableauAffichage[$i]; ?>'
console.log('couverture', typeCouverture);
allPolygone = new XMLHttpRequest();
// ici on cherche à lire la fonction qui permet de recuperer tous les polygones dans la BDD
allPolygone.open("GET", "http://localhost/connexionsqlserver_v2/Fonctions/LireAllPolygone.php?affichage=" + typeCouverture);
// console.log("test",typeCouverture);
// Ici la variable allPolygine contient tous les polygones
allPolygone.onreadystatechange = () => {
//si la transaction pour recuperer tous les polygones est terminée
if (allPolygone.readyState == 4) {
//si la transaction pour recuperer tous les polygones est un succès
if (allPolygone.status == 200) {
//Variable qui recupère après transformation en fichier JSON tous les polygones
console.log('le responseText',allPolygone.responseText)
let dataAllPolygone = JSON.parse(allPolygone.responseText)
//console.log('ApresJSON',dataAllPolygone)
// Je fais un foreach (je parcours) sur ma variable contenant tous les polygones ( le .region c'est parce que mon tableau c'est un tableau de region)
Object.entries(dataAllPolygone.region).forEach(poly => {
// ici je mets dans la varaible le polygone qui est parcouru
regionselectionnee = myCallBack(poly[1].polygone);
//Variable qui recupère après transformation en fichier JSON toutes des coordonnées en fonction du polygone
let allCoordByPolygone = new XMLHttpRequest();
// ici on cherche à lire la fonction qui permet de recuperer toutes les coordonnées en fonction du polygone dans la BDD
allCoordByPolygone.open("GET", "http://localhost/connexionsqlserver_v2/Fonctions/LireCoordByPolygone.php?region=" + regionselectionnee);
//On envoie la transaction pour mettre dans la variable le resultat
allCoordByPolygone.send(regionselectionnee);
// variable qui recupère toutes les zones en fonction du polygone ( Cette variable fait une jointure entre les tables polygone et couleur )
let allZoneByPolygone = new XMLHttpRequest();
// let date='2021-03-10'
// ici on cherche à lire la fonction qui permet de recuperer toutes les zones en fonction du polygone dans la BDD
allZoneByPolygone.open("GET", "http://localhost/connexionsqlserver_v2/Fonctions/LireZoneByPoly.php?region=" + regionselectionnee + "&date=" + date + "&affichage=" + typeCouverture);
//On envoie la transaction pour mettre dans la variable le resultat
allZoneByPolygone.send(null);
// Ici la variable allCoordByPolygone contient toutes les coordonnées en fonction du polygone qui est rentré
allCoordByPolygone.onreadystatechange = () => {
//si la transaction pour recuperer toutes les coord par polygone est terminée
if (allCoordByPolygone.readyState == 4) {
//si la transaction pour recuperer toutes les coord par polygone est un succès
if (allCoordByPolygone.status == 200) {
// Ici la variable allZoneByPolygone contient toutes les zones en fonction du polygone qui est rentré
allZoneByPolygone.onreadystatechange = () => {
if (allZoneByPolygone.readyState == 4) {
if (allZoneByPolygone.status == 200) {
let text = allZoneByPolygone.responseText
// console.log("test",text);
//Variable qui recupère après transformation en fichier JSON toutes les zones
let dataAllZoneByPolygone = JSON.parse(text)
//Variable qui recupère après transformation en fichier JSON toutes les coordonnées en fonction du polygone
let dataAllCoordByPolygone = JSON.parse(allCoordByPolygone.responseText)
//console.log("test",dataAllCoordByPolygone.coordonnees);
// On déclare la variable polygone qui va contenir notre polygone et qu'on va ajouté à la carte
let polygone = L.polygon(dataAllCoordByPolygone.coordonnees, {
color: dataAllZoneByPolygone.coord[1].couleur,
fillColor: dataAllZoneByPolygone.coord[1].couleur,
fillOpacity: 0.5,
stroke: false,
weight: 2,
lineJoin: 'round',
lineCap: 'round',
}).addTo(macarte);
// Ici on ajoute un popup pour chaque polygone ajouté à la carte
polygone.bindPopup("region: " + poly[1].polygone + "<br/> zone: " + dataAllZoneByPolygone.coord[1].zone + "<br/> g2r: " + dataAllZoneByPolygone.coord[1].g2r);
}
}
}
} else {
//si la transaction pour recuperer toutes les coord par polygone n'est pas un succè
console.log("reponse est", allCoordByPolygone.statusText)
}
}
}
})
}
}
}
//On envoie la transaction pour mettre dans la variable le resultat
allPolygone.send(null);
<?php
}
?>
[/code][/code]
Du coup, la il va exécuter tout ce qu'il y'a dans me foreach mais juste pour le dernier élément du tableau et pourtant dans mon console.log('couverture', typeCouverture), tous les éléments sont affichés.
Je vous prie de m'aider svp.
Modifié par Ivanna (18 Mar 2021 - 12:05)