TourDeJeu, le réseau des jeux en ligne alternatifs : jeux web multijoueurs, jeux par forum. En savoir +

Flux RSS des discussions du forum : pour les joueurs, et pour les créateurs et MJ
  Reply to this topicStart new topicStart Poll

> Pb Pour Raffraichir Une Partie De Page, (voir la page entière si possible)
TiFred
  Ecrit le : Mardi 27 Novembre 2007 à 20h53
Quote Post


Kid
*

Groupe : Membre
Messages : 48


Bonjour,

Je m'explique !
En fait, je voudrais afficher le déroulement d'un match de basket
Donc je cherche à rafraichir la page toutes les 5s en actualisant le score, le temps restant, les fautes, ...
Le pb est que cela repart à 0 tout le temps

Qq'un peut-il m'aider SVP ?
Merci


--------------------
TiFred
Supporter du LIMOGES CSP
PMUsers Website
Top
Mr Pompkik
  Ecrit le : Mardi 27 Novembre 2007 à 22h46
Quote Post


Ouf
*

Groupe : Admin junior
Messages : 257


Faut la mettre au frigo.


MOUAHAHAHAHAHAHAHA

Oui bon ok j'ai compris =====> je sors


--------------------
BOUH !
user posted image
PM
Top
Manest
Ecrit le : Mardi 27 Novembre 2007 à 23h44
Quote Post


Ouf
*

Groupe : Membre
Messages : 503


Tu veux quoi exactement!? faire le replay d'un match qui à eu lieu? En fonction de quoi? Si tu fais un replay c'est que tu as un marqueur pour chaque étape. Un id, une action de joueur, une date, une numéro de tour... quelque chose quoi.

Il te suffit alors de rafraichir la page en passant le paramètre suivant à chaque fois...

Tu n'aurais pas un exemple à nous proposer?


--------------------
PMEmail PosterUsers Website
Top
TiFred
Ecrit le : Mercredi 28 Novembre 2007 à 11h19
Quote Post


Kid
*

Groupe : Membre
Messages : 48


Je lis le compte-rendu du match et je le restitue action par action (d'où le refresh de 5s)

En fait en affichant cette page, je mets aussi à jour la table jeu1_equipes pour debutmatch (d'où le pb car en rafraichissant la page, je rafraichis cette valeur aussi)

Plus clairement il faudrait que j'arrive à faire $temps_jeu = $temps_jeu + 5 à chaque fois que je rafraichis (et il me semble que quand je faisais simplement ça, il considérais à chaque fois que $temps_jeu=0 au début)

Qq'un a une idée ?


Mon code
CODE
<?
session_start();
?>
<LINK href="styles/defaut.css" rel="stylesheet">
<html>
<body onLoad="window.setTimeout('history.go(0)', 5000)"></body>
<?  //cette page est rafraichie automatiquement par le script au-dessus

//on ouvre le fichier texte de sauvegarde en lecture et on récupère les données
$fichier = 'cr/cr_'.$nummatch.'.php';
$fp = fopen($fichier,"r");  
$donnees = fread($fp,filesize($fichier));
fclose($fp);

require_once ("admin/fonctions.php");
$db = Ouvrebase();  //ouverture de la base

//on récupère l'heure de début de visualisation
$req = Envoierequette("SELECT debutmatch FROM jeu1_equipes WHERE equipe='".$equipe."'");
while($data = mysql_fetch_array($req))
  {$debut = $data[debutmatch];
  }
 
//on calcule le temps de jeu  
$temps_jeu = date("U") - $debut;        
$min = floor($temps_jeu/60);
$sec = $temps_jeu - $min*60; $sec2 = 5 * floor($sec/5);
if ($sec2<10) $sec2 = '0'.$sec2;
$temps_jeu = $min."'".$sec2;

$pos = strpos($donnees,$temps_jeu);
if (($min*60+$sec)>60) $temps_jeu2 = ($min-1)."'".$sec2;
else $temps_jeu2 = "0'00";
$pos2 = strpos($donnees,$temps_jeu2);
//affichage du CR du match sur une période donnée
$affichage = substr($donnees,$pos2,$pos-$pos2);
$donnees2 = substr($donnees,0,$pos);

//on recherche le score
$part = substr($donnees,0,$pos);
$pos5 = strpos($part,'points');
$pos5b = strpos($part,'lancer-franc');
if ($pos5b>$pos5) $pos5 = $pos5b;
while ($pos5>0)
  {$pos3 = strpos($part,'(',$pos5);
   $pos4 = strpos($part,')',$pos5);
   $score = substr($part,$pos3+1,$pos4-$pos3-1);
   $part = substr($part,$pos4);
   $pos5 = strpos($part,'points');
   $pos5b = strpos($part,'lancer-franc');
   if ($pos5b>$pos5) $pos5 = $pos5b;
  }
   
$pos6 = strpos($score,'-');
$score1 = trim(substr($score,0,$pos6));
$score2 = trim(substr($score,$pos6+1));
if ($score1=='') $score1 = 0;
if ($score2=='') $score2 = 0;
if ($score1<10) $score1 = '0'.$score1;
if ($score1<100) $score1 = '0'.$score1;    
if ($score2<10) $score2 = '0'.$score2;    
if ($score2<100) $score2 = '0'.$score2;

$req2 = Envoierequette("SELECT equipe1, equipe2, score FROM jeu1_calendrier WHERE id='".$nummatch."'");
while($data = mysql_fetch_array($req2))
  {$equipe1 = $data[equipe1]; $equipe2 = $data[equipe2]; $score_final = $data[score];
   $nb_joueurs[$equipe1] = 0; $nb_joueurs[$equipe2] = 0;
  }
 
$req3 = Envoierequette("SELECT pays FROM jeu1_equipes WHERE equipe='".$equipe1."'");
while($data = mysql_fetch_array($req3))
  {$pays1 = $data[pays];
  }
$req3b = Envoierequette("SELECT pays FROM jeu1_equipes WHERE equipe='".$equipe2."'");
while($data = mysql_fetch_array($req3b))
  {$pays2 = $data[pays];
  }

//on recherche les différentes infos pour afficher le nb de fautes et autres infos
$req1 = Envoierequette("SELECT * FROM jeu1_stats".$numsaison."_".strtolower($pays1)." WHERE id_match='".$nummatch."'");
while($data = mysql_fetch_array($req1))
  {$nb_joueurs[$data[equipe]] = $nb_joueurs[$data[equipe]] + 1;
   $joueur[$nb_joueurs[$data[equipe]]][$data[equipe]] = stripslashes($data[joueur]);
   $fautes[$joueur[$nb_joueurs[$data[equipe]]][$data[equipe]]] = 0;
  }
if ($pays2<>$pays1)
  {$req1b = Envoierequette("SELECT * FROM jeu1_stats".$numsaison."_".strtolower($pays2)." WHERE id_match='".$nummatch."'");
   while($data = mysql_fetch_array($req1b))
      {$nb_joueurs[$data[equipe]] = $nb_joueurs[$data[equipe]] + 1;
       $joueur[$nb_joueurs[$data[equipe]]][$data[equipe]] = stripslashes($data[joueur]);
       $fautes[$joueur[$nb_joueurs[$data[equipe]]][$data[equipe]]] = 0;
      }
  }
$pos7 = strpos($donnees2,'Faute de <font color=');
$partie = $donnees2;
while ($pos7>0)
  {$partie = substr($partie,$pos7);
   $pos8 = strpos($partie,'>');
   $pos9 = strpos($partie,'</font>',$pos8);
   $nom_joueur = substr($partie,$pos8+1,$pos9-$pos8-1);
   $partie = substr($partie,$pos9);
   $pos10 = strpos($partie,'(');
   $pos11 = strpos($partie,'e faute)');
   $fautes[$nom_joueur] = substr($partie,$pos10+1,$pos11-$pos10-1);
   $partie = substr($partie,$pos11+8);
   $pos7 = strpos($partie,'Faute de <font color=');
  }


//
if (($min*60+$sec2)<10*60)
  {$periode = '1er quart-temps'; $fin = 10*60;
  }    
else if (($min*60+$sec2)<20*60)
  {$periode = '2ème quart-temps'; $fin = 20*60;
  }
else if (($min*60+$sec2)<30*60)
  {$periode = '3ème quart-temps'; $fin = 30*60;
  }
else if (($min*60+$sec2)<40*60)
  {$periode = '4ème quart-temps'; $fin = 40*60;
  }
else {$nbprol = 1;
   while (($min*60+$sec2)>(40+5*$nbprol)*60)
      {$nbprol = $nbprol + 1;
      }
   $periode = $nbprol.'e prolongation';
   $fin = (40+5*$nbprol)*60;
  }

//calcul du temps restant
$temps_restant = $fin - ($min*60+$sec2);
if ($pos=='')
  {$periode = 'Match terminé !'; $temps_restant = 0;
   //on affiche le CR du match
   echo('<br />'.$donnees.'<br />');
   
   //on recherche le score
   $part = substr($donnees,0);
   $pos5 = strpos($part,'points');
   $pos5b = strpos($part,'lancer-franc');
   if ($pos5b>$pos5) $pos5 = $pos5b;
   while ($pos5>0)
      {$pos3 = strpos($part,'(',$pos5);
       $pos4 = strpos($part,')',$pos5);
       $score = substr($part,$pos3+1,$pos4-$pos3-1);
       $part = substr($part,$pos4);
       $pos5 = strpos($part,'points');
       $pos5b = strpos($part,'lancer-franc');
       if ($pos5b>$pos5) $pos5 = $pos5b;
      }

   $pos6 = strpos($score,'-');
   $score1 = trim(substr($score,0,$pos6));
   $score2 = trim(substr($score,$pos6+1));
   if ($score1=='') $score1 = 0;
   if ($score2=='') $score2 = 0;
   if ($score1<10) $score1 = '0'.$score1;
   if ($score1<100) $score1 = '0'.$score1;
   if ($score2<10) $score2 = '0'.$score2;
   if ($score2<100) $score2 = '0'.$score2;
  }
     
$minr = floor($temps_restant/60);
$secr = $temps_restant - $minr*60;
if ($secr<10) $secr = '0'.$secr;
if ($minr<10) $minr = '0'.$minr;
$temps_restant = $minr."'".$secr;

//affichage du tableau de score
$part1 = substr($temps_restant,0,1);
$part11 = substr($score1,0,1); $part21 = substr($score2,0,1);
$part2 = substr($temps_restant,1,1);
$part12 = substr($score1,1,1); $part22 = substr($score2,1,1);
$part3 = substr($temps_restant,3,1);
$part13 = substr($score1,2,1); $part23 = substr($score2,2,1);
$part4 = substr($temps_restant,4,1);

echo('<div class="centr2">Voir les <a class="liens" href="index.php?page2=matchstats&equipe1='.$equipe1.'&equipe2='.$equipe2.'&id_match='.$nummatch.'&score='.$score_final.'">stats finales du match</a></div>');

echo('<table name="score" align="center" width="95%" heigh="100%" border="2" cellspacing="0" bordercolor="gray" bgcolor="white">');

echo('<tr align="center" valign="middle"><td width="35%" colspan="2"><font size="4" color="red"><b>'.$equipe1.'</b></td>');
echo('<td width="15%"><img src="images/'.$part11.'.gif" border="0"><img src="images/'.$part12.'.gif" border="0"><img src="images/'.$part13.'.gif" border="0"></td>');
echo('<td width="15%"><img src="images/'.$part21.'.gif" border="0"><img src="images/'.$part22.'.gif" border="0"><img src="images/'.$part23.'.gif" border="0"></td>');
echo('<td width="35%" colspan="2"><font size="4" color="blue"><b>'.$equipe2.'</b></td></tr>');

echo('<tr align="left" valign="middle">');
$numeq = 1;
include('tablequipe.php');
echo('<td width="30%" colspan="2"><font size="3"><center><b>'.$periode.' :<br /><br />');
echo('<img src="images/'.$part1.'.gif" border="0"><img src="images/'.$part2.'.gif" border="0"> : <img src="images/'.$part3.'.gif" border="0"><img src="images/'.$part4.'.gif" border="0"></td>');
$numeq = 2;
include('tablequipe.php');
echo('</tr>');
echo('<tr><td colspan="6">'.$affichage.'</td></tr>');

echo('</table>');

Fermebase($db);  //fermeture de la base
?></html>


--------------------
TiFred
Supporter du LIMOGES CSP
PMUsers Website
Top
Sybler
Ecrit le : Jeudi 29 Novembre 2007 à 00h04
Quote Post


Ouf
*

Groupe : Membre
Messages : 453


Bon, comme toujours j'y vais de mémoire, mais en gros:

- Utilise la librairie PROTOTYPE ( c'est une librairie javascript ) et utilise les fonctions concernant AJAX

Place la zone de ta page qui doit être rafraichi dans un DIV, puis tu la recharge avec la fonction updater de prototype pour mettre a jour le contenu du DIV uniquement.

Documentation : http://www.sergiopereira.com/articles/prot...ml#Ajax.Updater

Ensuite il te suffit de mettre un timer javascript qui appelle la fonction dans laquelle tu aura mis ton code de rafraîchissement.



ATTENTION, 5 seconde me parerait un délais très faible. Moindrement que le serveur ou la connexion connaîtra des raté, et que le contenu prendrais plus de 5 secondes à transférer, ca pourrait poser problème. Et si jamais sa se produit, tu aura droit à un effet boule de neige.

Assure-toi que ton serveur peut supporter cela, et que les joueurs pourront désactiver cette option.


--------------------
user posted image
PMEmail PosterUsers Website
Top
TiFred
Ecrit le : Jeudi 29 Novembre 2007 à 13h11
Quote Post


Kid
*

Groupe : Membre
Messages : 48


Merci je vais regarder ça !

La librairie il faut la renseigner qq part ?
Tu n'aurais pas un petit exemple STP ?
Merci


--------------------
TiFred
Supporter du LIMOGES CSP
PMUsers Website
Top
TiFred
Ecrit le : Jeudi 29 Novembre 2007 à 13h22
Quote Post


Kid
*

Groupe : Membre
Messages : 48


Pour ce que ça intéresse, j'ai trouvé en français ça


--------------------
TiFred
Supporter du LIMOGES CSP
PMUsers Website
Top
Sybler
Ecrit le : Jeudi 29 Novembre 2007 à 22h02
Quote Post


Ouf
*

Groupe : Membre
Messages : 453


Le lien que je t'ai donné documente la version 1.5.0 de la librairie.
Et pour utiliser tout ca, il te suffit d'inclure le fichier prototype.js sur la page avant de l'utiliser par la suite.


--------------------
user posted image
PMEmail PosterUsers Website
Top
TiFred
Ecrit le : Vendredi 30 Novembre 2007 à 10h35
Quote Post


Kid
*

Groupe : Membre
Messages : 48


Tu n'aurais pas un exemple de script STP
Je n'ai pas trop de temps pour tout lire

Merci


--------------------
TiFred
Supporter du LIMOGES CSP
PMUsers Website
Top
Sybler
Ecrit le : Mardi 04 Décembre 2007 à 18h48
Quote Post


Ouf
*

Groupe : Membre
Messages : 453


"Pas de bras, pas de biscuit !"

Je vais quand même pas faire toute les recherches et/ou ton codage à ta place...


Je peux juste te dire que ce que tu recherche tiens en 1 ligne:
CODE


new Ajax.PeriodicalUpdater('items', '/items', {   method: 'get', frequency: 3, decay: 2 });


Source: http://www.prototypejs.org/api/ajax/periodicalUpdater


La documentation depuis prototype 1.5 est extrèment claire et bien faite. (Indexé par classe, avec mention des héritages et définition de chaque attribut...)

S'il manque peut-être d'exemple, voilà qui est fait smile.gif


--------------------
user posted image
PMEmail PosterUsers Website
Top
Draedrus
Ecrit le : Mercredi 27 Février 2008 à 17h57
Quote Post


Ouf
*

Groupe : Membre
Messages : 212


QUOTE (Mr Pompkik @ Mardi 27 Novembre 2007 21h46)
Faut la mettre au frigo.


MOUAHAHAHAHAHAHAHA

Oui bon ok j'ai compris =====> je sors

Quel enfoiré suilà quand il s'y met biggrin.gif whistling.gif


--------------------
user posted image

- Un jeu de rôles avec... Un peu d'Humour, un peu de médieval-fantastique, un peu de stratégie, un peu de délire profond, un peu de désign bon enfant... :)
PMEmail PosterUsers Website
Top
Mr Pompkik
Ecrit le : Mercredi 27 Février 2008 à 18h19
Quote Post


Ouf
*

Groupe : Admin junior
Messages : 257


QUOTE (Draedrus @ Mercredi 27 Février 2008 17h57)
QUOTE (Mr Pompkik @ Mardi 27 Novembre 2007 21h46)
Faut la mettre au frigo.


MOUAHAHAHAHAHAHAHA

Oui bon ok j'ai compris =====> je sors

Quel enfoiré suilà quand il s'y met biggrin.gif whistling.gif

laugh.gif
J'aime quand tu parles ainsi biggrin.gif


--------------------
BOUH !
user posted image
PM
Top
TiFred
Ecrit le : Jeudi 26 Juin 2008 à 21h27
Quote Post


Kid
*

Groupe : Membre
Messages : 48


Désolé de relancer ce sujet
En fait j'ai voulu faire un test et ça ne marche
Voici le script qui s'appelle test_update.php

CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>EBASKET</title>
<link href="styles/defaut.css" type="text/css" rel="stylesheet" />
<meta name="Description" content="EBASKET, un jeu de gestion d'équipe sur le basket" />
<meta http-equiv="content-Script-Type" content="text/javascript" />
</head>
<body>

<h1>Test PeriodicalUpdater !</h1><div>
<script type='text/javascript' src="prototype-1.4.0.js"></script>
<script type='text/javascript'>
   Event.observe(window, 'load', UpdatePage);
   function UpdatePage ()
      {new Ajax.PeriodicalUpdater('monDiv', 'test_update.php', {method: 'get', frequency: 10 } );
      }
</script><div id='monDiv'>
<?php
@$time = $time+10;
echo "<br/>time=$time</div>";
?>
</div></body>
</html>


--------------------
TiFred
Supporter du LIMOGES CSP
PMUsers Website
Top
Sybler
Ecrit le : Mardi 14 Septembre 2010 à 15h47
Quote Post


Ouf
*

Groupe : Membre
Messages : 453


Bon ca date de longtemps, mais juste au cas ou quelqu'un lira ca dans le futur:
JQuery semble prendre le pas sur Prototype et Mootools, donc ne suivez plus me conseil sur l'utilisation de prototype.

Ce sont tous de bien bonne librairies, mais la tendance et le choix des modules va avec JQuery.

Note au passage, je n'ai aucune idée de pourquoi le dernier message ne fonctionne pas, mais le plugin FireBug de firefox permet --entre autre-- de débugger les requêtes ajax et d'en savoir plus sur ce qui cloche.


--------------------
user posted image
PMEmail PosterUsers Website
Top
« Sujets + anciens | Programmer | Sujets + récents »

Reply to this topicStart new topicStart Poll