Php afficher nouveau texte dans la page [Fermé]

- - Dernière réponse :  Utilisateur anonyme - 15 janv. 2013 à 02:11
Bonjour,


Je suis en train de faire un jeu en HTML5, et j'aimerais que si quelqu'un bat le score, il l'écris dans la page web (mais de facon à que tout le monde le voye). Comment faire sachant que le score est dans une variable javascript nommé "score"? Si possible donnez moi le code.


Merci

Afficher la suite 

7 réponses

Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
866
0
Merci
je ne pense pas que ce soit possible.
- Les infos envoyées sur la page web par le serveur le sont à la demande du client (le navigateur)
- un script php ne s'exécute que en "relation" avec un seul client donc ce script qui va détecter le score ne peut pas aller écrire dans le navigateur des autres clients " il ne les connait pas"
Messages postés
95
Date d'inscription
mardi 29 août 2006
Statut
Membre
Dernière intervention
10 avril 2014
35
0
Merci
A mon avis ça doit être possible.

Voici quelques piste :
- Un timer JS qui tourne en boucle sur la page. Ce script va faire un appel AJAX vers un fichier php qui cherche dans une bdd le plus haut score :
var timer = setInterval(function(){appelAjax()},1000);

function appelAjax()
{
	var xmlhttp;
 	if (window.XMLHttpRequest)
   	{// code for IE7+, Firefox, Chrome, Opera, Safari
   		xmlhttp=new XMLHttpRequest();
  	}
 	else
   	{// code for IE6, IE5
   		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   	}
	xmlhttp.onreadystatechange=function()
   	{
   		if (xmlhttp.readyState==4 && xmlhttp.status==200)
     	{
     		document.getElementById("scoreMax").innerHTML=xmlhttp.responseText;
     	}
   	}
 	xmlhttp.open("GET","majRecord.php",true);
 	xmlhttp.send();
}

- Un script php (appellé dans le JS "majRecord.php")
<?php
mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("nom_bdd");
$requete="select max('score') as score_max from tbl_scores";
$result=mysql_fetch_array(mysql_query($requete));
echo "Record : ".$result["score_max"]." points."
mysql_close();
?>

Et enfin, un div à placer dans ton html à l'endroit où tu veux que le score s'affiche :
<div id="scoreMax"></div>


La seule chose qui te reste à faire c'est de stocker son score que tu as dans ton JS (ta variable "score") dans ta base de donnée.

Si tu veux que je te fasse le script pour ça aussi dis le :)

Bonne soirée
Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
866
0
Merci
ok avec le timer mais il faut accepter le délai entre chaque appel au serveur
Messages postés
95
Date d'inscription
mardi 29 août 2006
Statut
Membre
Dernière intervention
10 avril 2014
35
0
Merci
Comment ça?

Je ne comprends pas ta réponse.

Si tu veux modifier le délai entre 2 appels du timer :
var timer = setInterval(function(){appelAjax()},1000);


Il suffit de modifier le 1000 par le temps que tu veux en millisecondes.
Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
866
0
Merci
non ce que je veux dire, il faut faire un compromis entre
- le délai entre deux appels au serveur en Ajax (timer)
est ce que ce délai ne sera pas trop pénalisant pour la mise à jour du score
- et la charge du serveur (nombre de connectés) si c'est un mutualisé
Messages postés
95
Date d'inscription
mardi 29 août 2006
Statut
Membre
Dernière intervention
10 avril 2014
35
0
Merci
La procédure lancée par le timer Ajax ne devrait pas prendre trop de temps en théorie. Si jamais ton site devenait assez important et que le temps augmente, tu as toujours la possibilité de stocker ton score max à un endroit unique (histoire que le script php le parcoure pas toute ta bdd pour chercher le score max).

En faisant cela, le temps de traitement de ton appel Ajax sera très bas et tes utilisateurs ne verront rien.
0
Merci
Ok, merci à tous