Bonjour à tous,

Le projet vise à faire un tableau d'affichage du classement de compétiteurs dans le cadre d'une course.
J'ai une base de données en mysql qui stocke les participants, le nombre de tour, le temps par tour et le meilleur temps.
Cette base est alimentée par une page php qui gère les passages des compétiteurs -> ca c'est ok. chaque passage est bien comptabilisé et la DB s'actualise.

Le problème réside au niveau de la page d'affichage des résultats qui contient un tableau dynamique.
La page est fixe et doit s'actualiser toutes les minutes.

Au chargement initial c'est bon. J'ai un XMLhttprequest qui va rechercher les données via une requete sql contenue dans un fichier php.
La ou ca bloque c'est lors des actualisations. Vu les logs de la console, je vois que XMLhttprequest est bien lancé mais en retour, au lieu d'avoir des données actualisées, j'ai les données initiales.... un peu comme si quelque part la requete sql du fichier php ne fonctionnait pas. Or je sais qu'elle fonctionne vu que lorsque je force l'actualisation de la page elle me donne les bonnes données.

La où cela devient encore plus étrange, c'est que lorsque j'exécute le tout en local via Xampp cela tourne correctement et c'est lorsque j'exécute sur mon site en ligne que cela me fait ce bug... quelqu'un aurait une idée?

code de la page:

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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
    <script>
<!-- classement -->	
		// initialisation
	var equipes;
        var timerId;
        var updateInterval = 60000;	
	var data
 
        // fetch data and store it in the variable data
        var xhReq = new XMLHttpRequest();
        xhReq.open("GET", "data.php",true);
        xhReq.send();
		xhReq.onreadystatechange = function() {
		if (this.readyState == 4 ) {
        data = JSON.parse(xhReq.responseText);
		resetBoard();
        }
};
 
        function descending(a, b) { return (a.tours < b.tours || (a.tours == b.tours && a.turntime > b.turntime)) ? 1 : -1; }
 
		function reposition() {
            var height = $("#classement .equipe").height();
            var y = height;
            for(var i = 0; i < equipes.length; i++) {
                equipes[i].$item.css("top", y + "px");
                y += height;			
            }
        }  
        function updateRanks(equipes) {
			var egal = 0
            for(var i = 0; i < equipes.length; i++) {
			if (i>0){
				if ((equipes[i-1].tours - equipes[i].tours)==0){
				equipes[i].$item.find(".rank").text(egal);
				} else {
			    equipes[i].$item.find(".rank").text(egal+1);
				egal = egal+1;				
				}
				}else {
				equipes[i].$item.find(".rank").text(i + 1);
				egal = i+1;
				}
			}
		}
 
 
        function fetchNewData(data,attributeName,name){
            for(var x in data){
                if((data[x].name == name) == true) {
                    return data[x][attributeName];
                }
            }
            return null;
        }        
 
		function time_convert(num) { 
			var hours = Math.floor(num / 3600);  
			var minutes = Math.floor((num - (hours * 3600)) / 60);
			if (minutes <= 9) {
			minutes = "0" + minutes;
			}
			var secondes = (num - (hours * 3600) - (minutes * 60));
			if (secondes <= 9) {
			secondes = "0" + secondes;
			}
			return hours + ":" + minutes + ":" + secondes;         
}
        function getNewData(){
            // get the new data for each  and change to their new values
            var newReq = new XMLHttpRequest();
            newReq.open("GET", "data.php",true);
            newReq.send();
 
			newReq.onreadystatechange = function() {
			if (this.readyState == 4 ) {
            var newData = JSON.parse(newReq.responseText); 
console.log(newData);
            for(var i = 0; i < equipes.length; i++) {
                var equipe = equipes[i];
                equipe.turntime = time_convert(fetchNewData(newData,'time_tour',equipe.name));
                equipe.$item.find(".turntime").text(equipe.turntime);
                equipe.bestturntime = time_convert(fetchNewData(newData,'best_time_tour',equipe.name));
                equipe.$item.find(".bestturntime").text(equipe.bestturntime);
                equipe.tours = fetchNewData(newData,'tours',equipe.name);
                equipe.$item.find(".tours").text(equipe.tours);
            }
            equipes.sort(descending);
			console.log(equipes);
            updateRanks(equipes);
            reposition();
 
};
};			
 
 
        }
 
 
        function resetBoard() {
            var $list = $("#classement");
            $list.find(".equipe").remove();
            if(timerId !== undefined) {
                clearInterval(timerId);
            }
 
	        equipes = [];
            for(let i = 0;i < 20;i++){
 
                equipes.push(
                    {
                        name : data[i].name,
                        tours: data[i].tours,                        
                        turntime: time_convert(data[i].time_tour),
                        bestturntime: data[i].best_time_tour,
 
                    }
                )
            }
 
            for(var i = 0; i < equipes.length; i++) {
                var $item = $(
                    "<tr class='equipe'>" + 
                        "<th class='rank'>" + (i + 1) + "</th>" + 
                        "<td class='name'>" + equipes[i].name + "</td>" + 
                        "<td class='tours'>" + equipes[i].tours + "</td>" +
                        "<td class='turntime'>" + equipes[i].turntime + "</td>" + 
                        "<td class='bestturntime'>" + time_convert(equipes[i].bestturntime) + "</td>" + 
 
                    "</tr>"
                );
 
                equipes[i].$item = $item;
                $list.append($item);
            }
            equipes.sort(descending);
            updateRanks(equipes);
            reposition();
 
            // fetch new data for the updateInterval
            timerId = setInterval("getNewData();", updateInterval);
 
        }	
 
    </script>

Et voici la page php appelée:

Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php header('content-Type:application/json'); 
 
 // connexion à la db */
 
include("dbconnect.php");  
 
// Si tout va bien, on peut continuer 
 
$donnees = $bdd->query('SELECT id, name, tours, time_tour, best_time_tour FROM resultats ORDER BY id DESC ')->fetchAll(PDO::FETCH_ASSOC);
$donnees = array_reverse($donnees);
 
print json_encode($donnees);
 
        ?>

merci d'avance pour votre aide

Manu