Redirection automatique à une certaine heure

Résolu/Fermé
Spritkiller Messages postés 11 Date d'inscription samedi 19 novembre 2011 Statut Membre Dernière intervention 5 novembre 2014 - 8 avril 2013 à 17:37
Spritkiller Messages postés 11 Date d'inscription samedi 19 novembre 2011 Statut Membre Dernière intervention 5 novembre 2014 - 9 avril 2013 à 19:57
Bonjour,

J'ai actuellement une radio, et pour certaines raisons techniques, il faut basculer entre deux serveurs: Un shoutcast, et un icecast, ce qui nous oblige à switcher entre deux players. M'enfin ça n'a pas grand chose à voir, sinon à situer le contexte.

Donc lors des émissions, je voudrais que le player change automatiquement, sans que l'utilisateur n'aie à recharger la page.
N'étant pas du tout codeur JavaScript, j'ai recherché longuement sur le net une solution, je n'ai trouvé qu'un code, qui bien-sûr ne fonctionne que si l'utilisateur recharge la page entre temps. Ce code fonctionne, je l'ai testé avec d'autres valeurs dans le if.

Voici le code:

<SCRIPT LANGUAGE="JavaScript"> 
var today=new Date(); 
var heure=""; 
var time=today.getHours(); 
var jour=today.getDay();
heure="" 
if (time>=21 && time<00 && jour==5) {
   document.location.href="player2.php"
}
</SCRIPT>


Auriez-vous une solution (en ajax, javascript ou autre, tant que je peux l'intégrer dans un fichier php) pour changer de player instantanément (dans l'exemple de mon code à 21h à 00h le vendredi) sans que l'utilisateur n'aie à recharger la page?

Merci,
Cordialement,
Spritkiller.

4 réponses

batoune Messages postés 538 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 4 avril 2017 96
8 avril 2013 à 17:48
Je suis pas un expert en javascript, mais est ce que en faisant un truc comme ça ça ne marcherais pas :
A l'ouverture de ta page, tu appel la fonction changePlayer(), et cette fonction va tester l'heure qu'il est, et si il est l'heure de changer de player, elle change, sinon elle ce rappelle toute seule au bout de X milliseconde (5000 dans l'exemple) via la méthod setTimeout(...)

function changePlayer(){
var today=new Date();
var heure="";
var time=today.getHours();
var jour=today.getDay();
heure=""
if (time>=21 && time<00 && jour==5) {
document.location.href="player2.php"
}
else{
setTimeout ("changePlayer()", 5000);
}
}
0
Spritkiller Messages postés 11 Date d'inscription samedi 19 novembre 2011 Statut Membre Dernière intervention 5 novembre 2014 1
8 avril 2013 à 18:09
Merci beaucoup pour ton aide qui, malgré qu'il paraissait juste, ne fonctionne pas.
Je l'ai testé pour le passage de 17h à 18h, et le résultat n'a pas été très concluant :/
Je l'avais juste modifié à des fins de tests à l'échelle des minutes, mais ça ne fonctionnait pas donc j'ai remis le code initial attendu le passage de 17h à 18h, et ça n'a rien donné de concluant :s

Donc si tu as d'autres solutions, ou que quelqu'un d'autre qui passe pas là en a, je les accueillerais avec plaisir!

Merci encore,
Cordialement,
0
batoune Messages postés 538 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 4 avril 2017 96
9 avril 2013 à 14:52
Et en calculant le temps (en miliseconde) entre l'heure a laquelle il faut changer le player et l 'heure courante, et en passant ce temps en paramètre de la fonction setTimeout(...) est ce que sa ne marcherait pas mieux?

genre :

au chargement de la page :

fonction calculDate(){
var currentDate=new Date();
var changeDate=//ici la bonne date;
var millisecondeBeforeChange;
//calcul de la différence entre currentDate et changeDate
//.....
setTimeout("changePlayer()",millisecondeBeforeChange);
}

function changePlayer(){
document.location.href="player2.php"
}
0
Spritkiller Messages postés 11 Date d'inscription samedi 19 novembre 2011 Statut Membre Dernière intervention 5 novembre 2014 1
9 avril 2013 à 15:54
Merci de la réponse, je vais essayer, mais à quel format je met la date? Parce qu'en regardant plusieurs script javascript j'ai vu qu'il y avait pas mal de formats.
Merci encore,
Cordialement,
0
batoune Messages postés 538 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 4 avril 2017 96
9 avril 2013 à 16:39
Ouais, j'ai vu aussi qu'il y avait pas mal de format différent,
le truc c'est de réussir a avoir le temps entre les deux date en milliseconde pour que la fonction setTimeout(....) puisse le prendre en compte
0
batoune Messages postés 538 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 4 avril 2017 96
Modifié par batoune le 9/04/2013 à 17:27
J'ai testé ça :


<html lang="en"> 
 <head> 
  <meta charset="utf-8" /> 
  <title>Ma page</title> 
   
  <SCRIPT LANGUAGE="JavaScript">  
  function calculDate(){ 
   
   //on recupere la date courante convertie en milliseconde 
   var currentDate=new Date().getTime();  
    
   //on recupere la date courante 
   var changeDate=new Date() 
   //on lui met l'heure de changement désirée 
   changeDate.setHours(20); 
   //on lui met la minute de changement désirée 
   changeDate.setMinutes(0); 
   //on lui met la seconde de changement désirée 
   changeDate.setSeconds(0); 
   //on lui met la milliseconde de changement désirée 
   changeDate.setMilliseconds(0); 
   //on la convertie en millisecondes 
   changeDate=changeDate.getTime(); 
    
   //on calcule la différence entre les deux date 
   var diff = changeDate-currentDate; 
    
   //si la différence est positive 
   if (diff>0){ 
    //on programme le changement de player dans "diff" millisecondes 
    setTimeout("changePlayer()",diff); 
   } 
   //sinon, on change tout de suite de player 
   else{ 
    changePlayer(); 
   } 
  } 
   
  //fonction qui change le player 
  function changePlayer(){ 
   //TODO 
  } 
  </SCRIPT> 
   
 </head> 
 <body topmargin="0" leftmargin="0" onLoad="calculDate();"> 
  <!-- contenu de la page web --> 
 </body> 
</html> 



chez moi sa marche, en mettant alert("OK"); dans la fonction changePlayer() j'ai bien le message "OK" qui apparait à l'heure que je veux.
Si tu met ta fonction pour changer de player a la place ça devrait le faire...
0
Spritkiller Messages postés 11 Date d'inscription samedi 19 novembre 2011 Statut Membre Dernière intervention 5 novembre 2014 1
9 avril 2013 à 19:57
Woow, merci beaucoup! Je m'apprêtais à coder moi-même ce système mais tu me l'as donné tout fait, fonctionnel, je te remercie énormément! Ca va beaucoup me servir! Je commençais à perdre espoir mais tu as trouvé la solution, c'est vraiment super!

Encore merci,
Cordialement,
0