Actualiser une page via un code sur une autre page. [Résolu]

setasan9 98 Messages postés lundi 14 juin 2004Date d'inscription 16 mars 2009 Dernière intervention - 18 févr. 2007 à 17:39 - Dernière réponse : setasan9 98 Messages postés lundi 14 juin 2004Date d'inscription 16 mars 2009 Dernière intervention
- 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 !!
Afficher la suite 

Votre réponse

21 réponses

Meilleure réponse
tipat10 9 Messages postés samedi 1 avril 2006Date d'inscription 8 mars 2007 Dernière intervention - 20 févr. 2007 à 23:23
3
Merci
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>

Merci tipat10 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de tipat10
Meilleure réponse
REMqb 23 Messages postés dimanche 3 avril 2005Date d'inscription 17 mai 2009 Dernière intervention - 22 févr. 2007 à 21:53
3
Merci
Le code

$file = fopen('../maj.txt', 'w');
fwrite($file, time());
fclose($file)

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.

Merci REMqb 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de REMqb
Meilleure réponse
tipat10 9 Messages postés samedi 1 avril 2006Date d'inscription 8 mars 2007 Dernière intervention - 22 févr. 2007 à 23:52
3
Merci
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.

Merci tipat10 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de tipat10
sbool 115 Messages postés mercredi 27 août 2003Date d'inscription 7 mars 2008 Dernière intervention - 18 févr. 2007 à 18:59
0
Merci
Pourquoi tu n'essaie pas avec la fonction random de php de generer une playlist ou d'en choisir une (tu en créé plusieurs avant)
Commenter la réponse de sbool
setasan9 98 Messages postés lundi 14 juin 2004Date d'inscription 16 mars 2009 Dernière intervention - 18 févr. 2007 à 19:10
0
Merci
Je comprend pas ta phrase ^^'
Il me manque juste un petit code pour actualiser.
Commenter la réponse de setasan9
setasan9 98 Messages postés lundi 14 juin 2004Date d'inscription 16 mars 2009 Dernière intervention - 19 févr. 2007 à 14:25
0
Merci
up
Commenter la réponse de setasan9
JulSoft 354 Messages postés dimanche 3 juin 2001Date d'inscription 11 mars 2013 Dernière intervention - 20 févr. 2007 à 11:58
0
Merci
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
Commenter la réponse de JulSoft
AkeluX 113 Messages postés samedi 15 mai 2004Date d'inscription 9 mars 2007 Dernière intervention - 20 févr. 2007 à 14:24
0
Merci
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()) ...

AkeluX
Commenter la réponse de AkeluX
setasan9 98 Messages postés lundi 14 juin 2004Date d'inscription 16 mars 2009 Dernière intervention - 20 févr. 2007 à 18:28
0
Merci
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 :)

Merci !
Commenter la réponse de setasan9
AkeluX 113 Messages postés samedi 15 mai 2004Date d'inscription 9 mars 2007 Dernière intervention - 20 févr. 2007 à 18:54
0
Merci
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 ...

Quelqu'un à une autre idée ?

AkeluX
Commenter la réponse de AkeluX
AkeluX 113 Messages postés samedi 15 mai 2004Date d'inscription 9 mars 2007 Dernière intervention - 21 févr. 2007 à 08:08
0
Merci
Ah net, très bonne idée ... J'avais pas vu le problème comme ça ...

AkeluX
Commenter la réponse de AkeluX
setasan9 98 Messages postés lundi 14 juin 2004Date d'inscription 16 mars 2009 Dernière intervention - 21 févr. 2007 à 11:19
0
Merci
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.
Commenter la réponse de setasan9
setasan9 98 Messages postés lundi 14 juin 2004Date d'inscription 16 mars 2009 Dernière intervention - 21 févr. 2007 à 21:43
0
Merci
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.

Vous pensez que ca coince à qu'elle endroit ?

http://mangasei.jexiste.fr
Commenter la réponse de setasan9
tipat10 9 Messages postés samedi 1 avril 2006Date d'inscription 8 mars 2007 Dernière intervention - 21 févr. 2007 à 22:36
0
Merci
Salut,
J'ai tester dans IE6 et IE7 mais chez moi, ça marche très bien.
Peut tu poster le code de ta page SVP

essaie ceci pour voir si ça résoue ton problème

<script language="javascript">nom_du_frame.window.location.reload();</script><!-- Doit être placé APRÈS le frame -->
Commenter la réponse de tipat10
setasan9 98 Messages postés lundi 14 juin 2004Date d'inscription 16 mars 2009 Dernière intervention - 22 févr. 2007 à 14:04
0
Merci
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]
Commenter la réponse de setasan9
setasan9 98 Messages postés lundi 14 juin 2004Date d'inscription 16 mars 2009 Dernière intervention - 22 févr. 2007 à 19:04
0
Merci
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].
 

</html>
Commenter la réponse de setasan9
REMqb 23 Messages postés dimanche 3 avril 2005Date d'inscription 17 mai 2009 Dernière intervention - 22 févr. 2007 à 19:23
0
Merci
Commenter la réponse de REMqb
REMqb 23 Messages postés dimanche 3 avril 2005Date d'inscription 17 mai 2009 Dernière intervention - 22 févr. 2007 à 19:29
0
Merci
Oups un petit bug

Je propose moi aussi ma solution :

Dans le fichier php qui génère la playlist en dessou de la création du fichier xml :

$file = fopen('../maj.txt', 'w');
fwrite($file, time());
fclose($file)

Dans la page contenant le player flash (entre <head>et</head>):

<script language="javascript">



var time = 5 //Temps en minutes entre deux vérifications



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);
     };
 
if(!maj){
 var maj = file('../maj.txt');
 setTimeout ('verifier()', 1000*time);
}



function verifier(){
 var newmaj = file('../maj.txt');
 if (newmaj != maj) {
  document.location.reload();
 }
 setTimeout ('verifier()', 1000*60*time);
}



</script>

Voila, en espérant t'aider.
Commenter la réponse de REMqb
setasan9 98 Messages postés lundi 14 juin 2004Date d'inscription 16 mars 2009 Dernière intervention - 22 févr. 2007 à 21:29
0
Merci
Merci beaucoup ! Mais je ne comprend pas bien le code.
Tu pourrais me le commenter un peu plus s'il te plait ? sans vouloir t'embeter ^^'
Commenter la réponse de setasan9
setasan9 98 Messages postés lundi 14 juin 2004Date d'inscription 16 mars 2009 Dernière intervention - 22 févr. 2007 à 22:28
0
Merci
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.
Commenter la réponse de setasan9

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.