Php afficher nouveau texte dans la page

Fermé
Utilisateur anonyme - 10 janv. 2013 à 10:35
 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

7 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 janv. 2013 à 18:53
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"
0
LDMBatman Messages postés 95 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 10 avril 2014 39
11 janv. 2013 à 22:13
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
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
12 janv. 2013 à 09:53
ok avec le timer mais il faut accepter le délai entre chaque appel au serveur
0
LDMBatman Messages postés 95 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 10 avril 2014 39
14 janv. 2013 à 18:10
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
14 janv. 2013 à 18:46
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é
0
LDMBatman Messages postés 95 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 10 avril 2014 39
14 janv. 2013 à 19:01
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
Utilisateur anonyme
15 janv. 2013 à 02:11
Ok, merci à tous
0