setasan9
Messages postés98Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention16 mars 2009
-
18 févr. 2007 à 17:39
setasan9
Messages postés98Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention16 mars 2009
-
23 févr. 2007 à 00:58
Bonsoir ,
Je cherche a creer une page php qui m'actualisera une autre page du site.
Je ne veus pas utiliser de meta pour la simple raison que l'actualisation se fera a des heures précises de la journée. :)
J'ai passé une bonne parti de mon aprem a chercher, mais je retombe toujour sur le meta.
Voici ce que je suis en train de réaliser.
Je viens de mettre en place un lecteur flash qui lit une playlist xml.
A certaines heure de la journée php genere une nouvelle playlist et écrase l'ancienne.
Pour que le lecteur flash prenne en compte le changement il faut que ca page soit actualisé (d'ou ma petite requete ^^).
Donc quand php aura generé le fichier xml, il devra actualiser la page du lecteur.
J'espere que j'ai été clair :)
Merci d'avance pour votre aide !!
A voir également:
Php refresh page
Reload page php - Meilleures réponses
Actualiser une page php sans recharger - Meilleures réponses
tipat10
Messages postés9Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention 8 mars 20071 20 févr. 2007 à 23:23
Salut,
Si la playlist change seulement à des heures précise dans la journée, je ne vois pas pourquoi il faudrait faire un appel AJAX à tout les 10min. Je propose un compte à rebours en javascript et quand le temps est écoulé, il recharge la page. Le script php renseigne la variable du temps restant avant le prochain "refresh".
player.php :
<script language="javascript">
seconde = <?php
$refresh = array(9.30, 12.0, 15.0,16.15); // heure.minute
sort($refresh);
foreach ($refresh as $time)
{
$time = explode(".", $time);
if (time() < mktime($time[0], $time[1], 00)) {
$next = mktime($time[0], $time[1], 00); break;
}
}
echo $next-time(); // Seconde restante avant le refresh
?>;
window.setTimeout("window.location.reload()",seconde*1000);
</script>
crée un fichier s'appelant maj.txt (pour mise à jour) contenant le nombre de secondes entre le 1er janvier 1970 et la date de création du fichier.
pour la partie javascript :
<script language ="javascript">var time = 5 //Temps en minutes entre deux vérifications
// Fonction permetant de récuperer le contenu d'un fichier
function file(fichier)
{
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4) return(xhr_object.responseText);
else return(false);
};
//Fin de la fonction
//Au chargement de la page verifie si la variable maj est initialisée si non l'initialise avec pour valeur la dernière date de mise à jour de la playliste. if(!maj){
var maj = file('../maj.txt');
setTimeout ('verifier()', 1000*60*time);
}
//Fonction de vérification : toutes les time minutes vérifie la date de mise à jour de la playliste si la date est différente le script reload la page. function verifier(){
var newmaj = file('../maj.txt');
if (newmaj != maj) {
document.location.reload();
}
setTimeout ('verifier()', 1000*60*time);
}
</script>
Voila. normalement ce script est fonctionelle mais je n'ai pas eu le temps de le tester entièrement.
tipat10
Messages postés9Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention 8 mars 20071 22 févr. 2007 à 23:52
REMqb >> bien pensé !
Puis-je sugérer une amélioration :
<strike>if(!maj){</strike> // Pourquoi mettre un if ? la variable "maj" n'est nécessairement pas définie
// car elle n'est pas définie plus haut et ce code est exécuté une seule fois au chargement.
var maj = file('../maj.txt');
set<strike>Timeout</strike> ('verifier()', 1000*60*time); // setInterval conviendrait mieux, je crois
setInterval('verifier()', 1000*60*time);
<strike>}
</strike>
function verifier(){
var newmaj = file('../maj.txt');
if (newmaj != maj) {
document.location.reload();
}
<strike> setTimeout ('verifier()', 1000*60*time);</strike> // Plus besoin si on utilise setInterval
}
<< J'ai essayé ton code en mettant 1mn, mais la page s'actalise toutes les secondes.>>
En fait, la première fois que REMqb a posté le code, le "*60" de la ligne 20 n'était pas présent. Par contre dans son post suivant, c'est corrigé.
<<J'en conclu donc que "var time = 5" est en faite des secondes (punaise je suis fort) >>
C'est logique car le nombre de minute n'était pas converti en seconde ce qui entraînait l'actualisation à toutes les secondes.
JulSoft
Messages postés354Date d'inscriptiondimanche 3 juin 2001StatutMembreDernière intervention11 mars 2013 20 févr. 2007 à 11:58
et tu ne peux pas dire à ton lecteur flash de reactualiser lui même sa playlist toutes les x heures ou un truc du genre??? A ma connaissance on ne peut pas forcer le rafraichissement d'une page chez tous les visiteurs
AkeluX
Messages postés113Date d'inscriptionsamedi 15 mai 2004StatutMembreDernière intervention 9 mars 20072 20 févr. 2007 à 14:24
Une petite idée qui me vient comme ça :
La page qui contient le player regarde, par exemple toutes les 10 minutes, si une nouvelle playlist est disponible. Tu peux le faire avec de l'AJAX. Dans le cas positif, tu recharges la page avec du JavaScript (window.location.relaod()) ...
setasan9
Messages postés98Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention16 mars 2009 20 févr. 2007 à 18:28
Je ne veus absolument pas que la page qui contien le lecteur se recharge tous les Xmn. Je veux que ca soie php qui actualise la page à distance. Le serveur creer une nouvelle playlist et actualise la page poiur lancer la nouvelle serie de vidéo.
Mais le coup que le reactualise lui meme la playlist, je n'y avait pas pensé. Je vais me renseigner.
Si quelqu'un a la solution pour le code php je suis toujour preneur :)
AkeluX
Messages postés113Date d'inscriptionsamedi 15 mai 2004StatutMembreDernière intervention 9 mars 20072 20 févr. 2007 à 18:54
Non non dans ma méthode, la page ne se recharge pas c'est juste un appel en AJAX complètement invisible pour l'utilisateur qui va vérifier s'il y a une nouvelle playlist ... Et la page se recharge uniquement s'il y a une nouvelle playlist !
A moins de faire ça directement dans le player flash, je vois pas d'autre solution ...
setasan9
Messages postés98Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention16 mars 2009 21 févr. 2007 à 11:19
A oui. C'est une exelente méthode ! C'est même plus simple que la méthode que je voulais appliquer. A la base je voulais que webcron lance le codphp qui actualise la page a des heures fixe.
Merci Tipat10 ! Je file essayer le code.
setasan9
Messages postés98Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention16 mars 2009 21 févr. 2007 à 21:43
C'est nikel ! :) J'ai un petit soucis cependant.
Dans la page qui se reload, il y a une iframe avec un src qui change également selon les heures.
Quand le script applique le refresh, l'iframe à bien son nouveau lien mais le contenu ne change pas.
Par contre, ca marche quans j'actualise manuellement.
setasan9
Messages postés98Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention16 mars 2009 22 févr. 2007 à 14:04
titap10, tu m'a ouvert les yeux. OO ^^ Je n'avais pas penssé a tester sous ie. Et effectivement ca marche tres bien !
Donc le soucis viendrais de firefox (pour une fois).
J'ai essayé de mettre en plus du premier reload, le script que tu m'a mis ci-dessus, et l'iframe ne s'ouvre pas du tout.
<script language="javascript">nom_du_frame.window.location.reload();</script>
Alors j'ai essayé ceci, mais firefox n'en veux toujour pas :
<script language="javascript">window.setTimeout("mon_iframe.window.location.reload()",seconde*1000);/script>
Ou encors, en supposant que le "1000" = 1sc, j'ai mis "2000", comme ca le reload aura eu le temp de voir que le src a changé ^^' :
<script language="javascript">window.setTimeout("mon_iframe.window.location.reload()",seconde*2000);/script>
Mais non plus. J'ai donc remis comme au depart.
Pour conclure, ca marche pour ie, mais pas pour firefox.
Si il n'y as pas de solution, de toute maniere cette fameuse page s'ouvre dans une popup, donc est-ce possible de forcer le lien à ouvrir la pop sous ie ? [je suis sous ff je clique "voir truc" et ca m'ouvre une popup ie]
setasan9
Messages postés98Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention16 mars 2009 22 févr. 2007 à 19:04
Le code de ma page :
<hr size="2" width="100%" /><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="styletv.css" rel="stylesheet" type="text/css">
<title>test</title>
</head>
<script language="javascript">
seconde = <?php
$refresh = array( 18.50, 18.51, 18.52, 18.53,); // heure.minute
sort($refresh);
foreach ($refresh as $time)
{
$time = explode(".", $time);
if (time() < mktime($time[0], $time[1], 00)) {
$next = mktime($time[0], $time[1], 00); break;
}
}
echo $next-time(); // Seconde restante avant le refresh
?>;
window.setTimeout("window.location.reload()",seconde*1000);
</script>
<?php
include "include/config.php";
$retour = mysql_query("SELECT * FROM programme ");
$donnees = mysql_fetch_array($retour) or die("Impossible d'interroger la base de données");
mysql_close();
?>
" width="340px" height="315px" frameborder="no" >
Vous avez un sushi ? Consultez [aide.html l'aide].
setasan9
Messages postés98Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention16 mars 2009 22 févr. 2007 à 22:28
Wow c'est genial ! L'idée de titap10 était deja beaucoup plus simple que mon idée de depart, mais la c'est encors encors plus simple puisque je n'ai finalement pas besoin de rentrer les heures. J'en suis ému ^^
J'ai essayé ton code en mettant 1mn, mais la page s'actalise toutes les secondes. J'en conclu donc que "var time = 5" est en faite des secondes (punaise je suis fort) ^^
La page qui genere la playlist genere maintenant aussi le fichier maj.txt, et la page qui vérifie les secondes de la derniere maj actualise correctement la page au bout du temp désiré.
Mais il y a un tout petit soucis; c'est que la page est actualisé a chaque fois même si il n'y a pas eu de mise à jour.