Texte changeant selon heure et jour

Résolu/Fermé
flechman - 16 oct. 2008 à 22:24
flechman Messages postés 3 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 20 octobre 2008 - 20 oct. 2008 à 16:31
Hello,

Après moulte et moulte recherches sur le net, je viens vers vous car je cherche un code html ou javascript qui puisse mettre un texte différent selon l'heure et je jour de la semaine.

je vous explique : je suis en train de refaire le site de la radio où je travaille et j'ai un petit espace sous le header où je voulais mettre un texte donnant le nom de l'émission qui est diffusée. Seulement voilà, impossible de trouver un code qui corresspond à ca, puisque les emissions ne sont pas les memes d'un jour à l'autre.

J'imagine qu'il faudrait une genre de liste décrivant toute la grille des programmes et ensuite un code dans l'espace où je veux ecrire le nom de l'emission.

J'ai trouvé ça sur le net mais ca marche pas et puis c'est tous les jours pareil (or, j'ai besoin de détailler toute la semaine)

[code]
<SCRIPT LANGUAGE="JavaScript">
<!--
var today=new Date();
var heure="";
function messagevariable() {
var time=today.getHours();
heure=""
if(time>=9 && time<11)
heure="emission1"
if(time>=11 && time<15)
heure="musique"
if(time>=15 && time<18)
heure="emission2"
if(time>=18 && time<21)
heure="musique"
if(time>=21 && time<0)
heure="emission3"
}
// --></SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
messagevariable();
document.writeln()
// -->
</SCRIPT>
/code

Merci de votre secours !

9 réponses

flechman Messages postés 3 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 20 octobre 2008 3
20 oct. 2008 à 16:31
merci pour toutes ces réponses ! à present le code marche impeccablement bien !
3
tagman99 Messages postés 29 Date d'inscription mercredi 15 octobre 2008 Statut Membre Dernière intervention 28 octobre 2008
17 oct. 2008 à 11:10
d'acc
donc tu dois avoir 3 truc:
1. la ou tes emissions passent (de là tu peux avoir le nom de l'emission) - ca peut etre une list si tu y tient
2. là ou tu affiche le nom de l'emission: un simple texte(tu mets ca en variable)
3. du code javascript pour récuperer le nom de l'emission et l'afficher à 2

dans le code javascript tu recupere la date/heure en cours an temps reel , fais un test sur ta liste et envoie le resultat à l'affichage (genre en ce moment: xxx)
1
euh merci bien pour votre mais je fais comment pour OnChange ? c'est pas mon fort le Javascript... javais trouvé un code a peu près semblable a celui que je vous ai donné plus haut mais en plus il y avait une liste genre "lundi=1, mardi=2... etc" mais ca marchait pa dans function javai mis un truc comme :

if(day=1 time>=9 && time<11)
heure="emission1"

mais aucune réponse...

pour vous donner un exemple : https://www.radiofrance.com/professionnels/regie-publicitaire/france-bleu?tag=provence a peu près au milieu de la page, on voit "en ce moment" puis le nom de l'emission... c un truc automatique comme ca que je voudrais.

le programme serait el même tous les jours yaurait pas de problèmes... grrrr...

merci bien
0
merci mais franchement je coince... g du mal avec les varaibles, function, getHour et compagnie...

g réussi qu'a faire ca :

if((day=1)&&(hour>=9)&&(hour<=11)) {
resultat="emission1"
}

mais c meme pas sûr que ca marche... et puis jvien de penser à un truc : y'a des emission à la demie, à et quart et tout alors comment mettre les minutes ?

et est-ce possible de lui dire que si il n'y a pas d'emissions, d'afficher "Musique non-stop" ? je pense que oui mais je sais pas comment...
0

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

Posez votre question
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
17 oct. 2008 à 14:08
Bonjour.

Déjà, la première chose à faire avant de se lancer : Etudier le problème.

En l'occurence, il y a des questions que tu dois te poser.
- Le programme est-il relativement constant ou changera-t-il toutes les semaines ?
- Qui va consulter mon site ? Le JS n'est pas implémenté sur tous les navigateurs (mobiles, navigateurs texte, ...), ni par tous...
- As-tu déjà un "truc" (fichier, table, ...) sur lequel les horaires sont notés ?
- Quelles sont tes compétences informatiques ?
- Combien de temps les gens vont-ils rester sur la page sur laquelle tu veux afficher les horaires ?

Dans l'absolu, à la louche, je dirais AJAX :
- Tu mets les horaires dans un fichier, sur le serveur. Soit une base de données (si tu en utilises déjà une), soit un fichier "plat" (format XML ou CSV, par exemple)
- Crée une fonction JavaScript qui servira à rechercher et formater les informations que tu as stockées.
- Crée une fonction php qui va sélectionner l'émission correspondant à l'horaire.


Voire, s'il s'agit d'une Web-radio, il y a moyen de récupérer le nom du fichier en cours d'utilisation...
0
mouais... je crois que je vais laisser tomber cette idée...

je connais pas javascript alors ajax... je peux copier et modifer un peu un code (changer du texte, couleurs... sans toucher au script en lui même) mais en créer un...

c'est vrai que sur le papier c'est simple faut faire ça, ça et ça mais mettre ca en code je le sens pas...

pour info c une radio fm et pas web et le système de diffusion est pas relié au net, ya juste un pc qui prend le signal audio en sortie des traitements de son et le met sur le net. puis sinon g déjà toute la grille des programmes.

bon ben merci quand meme

et si ya une bonne âme, à qui ça dit de faire ce code, avec plaisir ! je me chargerais de remplir les jours, heures et emissions, c'est juste le script qui me bloque...

merci
0
BartWadela Messages postés 557 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 3 février 2010 106
17 oct. 2008 à 17:59
PHP/SQL les gars !!! voyons !!

le mieux ce serai de passer par une bdd MySQL alimenté par ta liste d'emissions de la journee avec un id_heure et un id_jour ou autre c'est toi qui voit ...

ensuite sur ta page web tu mets ton code PHP avec 'IF' suivant $_SERVER['date'] et $_SERVER['time'] les infos ne seront pas les mm affichees

une fois la date et l'heure connue par ton script, tu lui demande d'aller chercher les infos dans ta bdd suivant les id que tu as definis avant

par contre ca va t'obliger a mettre a jour la bdd ts les jours ou a chaque nouvelle modif. de prog

mais avec 2 ou 3 formulaires bien ficelé tu devrais t'en sortir

**
si y'a quoi que ce soit MP moi

A+
-1
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
20 oct. 2008 à 14:36
puis sinon g déjà toute la grille des programmes.
Elle est dans quel format ?

Le plus simple, c'est de faire du PHP.
Inconvénient : il n'y a pas de mise à jour du côté client. Du coup, si quelqu'un arrive sur une page à 14.20, il va voir "14.00-14.30 => La Messe", et s'il reste sur la page, à 14.45 il verra toujours la même chose, alors qu'on sera passé à "14.30-15.00 => La Fesse"...

Pour un codage en PHP :
1. Lecture du fichier.
2. (Eventuellement) traduction des informations en quelque chose d'exploitable par PHP.
3. Affichage.

Exemple simple, avec un fichier texte au format CSV :
1;10;30;60;infos;les informations
1;11;30;180;musique;de la musique
1;14;30;30;jazzira;l'actu du jazz
1;15;0;60;hardy;tout sur le héron ;-)

Avec : Jour de la semaine (1=Lundi);heure début;minute début;durée en min.;titre;commentaire
function LireHoraires($fichier) {
// On commence par récupérer les infos qui nopus intéressent sur la date
$maintenant = getdate();
// $joursem : 0 = Dim, 1=Lun, ..., 6=Sam
$joursem = $maintenant['wday'];
$heure = $maintenant['hours'];
$minutes = $maintenant['minutes'];
// $min = heure exprimée en minutes depuis minuit
$min = 60*$heure + $minutes;
echo "$joursem $heure:$minutes ou $min<br />";

// Maintenant, on récupère les infos horaires
$file = fopen($fichier, "r");
while ($data = fgetcsv($file, 3000, ";")) {
	// On effectue les tests pour trouver l'émission qui passe actuellement
	if ($data[0] == $joursem) {
		// $debut = heure de début, exprimée en minutes depuis minuit
		// $fin = heure de fin, exprimée en minutes depuis minuit
		$debut = $data[1] * 60 + $data[2];
		$fin = $debut + $data[3];
		// Si on est entre $début et $fin, on affiche le programme.
		// Sinon, on continue...
		if (($min >= $debut) AND ($min < $fin)) {
			echo "$data[1]:$data[2] : $data[4], $data[5] ($data[3] min.)";
			break;
		}
	}
}
fclose ($file);

}


Il suffit ensuite d'appeler cette fonction, en passant le fichier en paramètre...
0
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
20 oct. 2008 à 14:38
puis sinon g déjà toute la grille des programmes.
Elle est dans quel format ?

Le plus simple, c'est de faire du PHP.
Inconvénient : il n'y a pas de mise à jour du côté client. Du coup, si quelqu'un arrive sur une page à 14.20, il va voir "14.00-14.30 => La Messe", et s'il reste sur la page, à 14.45 il verra toujours la même chose, alors qu'on sera passé à "14.30-15.00 => La Fesse"...

Pour un codage en PHP :
1. Lecture du fichier.
2. (Eventuellement) traduction des informations en quelque chose d'exploitable par PHP.
3. Affichage.

Exemple simple, avec un fichier texte au format CSV :
1;10;30;60;infos;les informations
1;11;30;180;musique;de la musique
1;14;30;30;jazzira;l'actu du jazz
1;15;0;60;hardy;tout sur le héron ;-)

Avec : Jour de la semaine (1=Lundi);heure début;minute début;durée en min.;titre;commentaire
function LireHoraires($fichier) {
// On commence par récupérer les infos qui nopus intéressent sur la date
$maintenant = getdate();
// $joursem : 0 = Dim, 1=Lun, ..., 6=Sam
$joursem = $maintenant['wday'];
$heure = $maintenant['hours'];
$minutes = $maintenant['minutes'];
// $min = heure exprimée en minutes depuis minuit
$min = 60*$heure + $minutes;
echo "$joursem $heure:$minutes ou $min<br />";

// Maintenant, on récupère les infos horaires
$file = fopen($fichier, "r");
while ($data = fgetcsv($file, 3000, ";")) {
	// On effectue les tests pour trouver l'émission qui passe actuellement
	if ($data[0] == $joursem) {
		// $debut = heure de début, exprimée en minutes depuis minuit
		// $fin = heure de fin, exprimée en minutes depuis minuit
		$debut = $data[1] * 60 + $data[2];
		$fin = $debut + $data[3];
		// Si on est entre $début et $fin, on affiche le programme.
		// Sinon, on continue...
		if (($min >= $debut) AND ($min < $fin)) {
			echo "$data[1]:$data[2] : $data[4], $data[5] ($data[3] min.)";
			break;
		}
	}
}
fclose ($file);

}


Il suffit ensuite d'appeler cette fonction, en passant le fichier en paramètre...
0
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89 > macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008
20 oct. 2008 à 15:00
Pour "faire" de l'AJAX :

1. On ajoute, dans le fichier index.php (ou dans le fichier adéquat) un DIV qui contiendra le programme...
<div id="horaires"></div>


2. On crée un fichier PHP (appelons-le horaires.php) qui appellera la fonction.
fichier horaires.php :
// Soit on écrit la fonction directement ici, 
// soit on fait un include du fichier qui contient nos fonctions.
function LireHoraires($fichier) {
..
}

LireHoraires("horaires.txt");


3. On crée un fichier Javascript (appelons-le radio.js) qui va contenir les fonctions nécessaires à l'affichage et au rafraîchissement...

La fonction de base d'AJAX : le javascript lance une requête au serveur, et récupère le résultat (une chaîne HTML).
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);
}

Et la fonction qui s'occupe de faire l'affichage :
function ChercherHoraires() {
texte = "";
// On teste si on récupère bien quelque chose à partir de la requête asynchrone
if (texte = file ("radio.php")) {
//On affecte le résultat de la requête au conetnu HTML
// du bloc ayant comme ID "horaires"
		document.getElementById("horaires").innerHTML = texte;
}
// On relance la fonction dans 5000 millisecondes - 5 secondes. Délai à ajuster...
setTimeout( "ChercherHoraires()",5000)
}


4. Il reste à associer le fichier javascript.
Dans l'en-tête de la page HTML, on rajoute :
<head>...
<script language="javascript" type="text/javascript" src="radio.js"></script>
...</head>


5. Surtout, il faut que la fonction ChercherHoraires() s'éxécute une première fois (ensuite, elle s'appelle régulièrement, donc le rafraîchissement se fait sans problème)
On peut, par exemple, rajouter un onLoad au body de la page :
<body onload="ChercherHoraires()">


Comme tu peux le voir, ce n'est pas si difficile que ça de faire de l'AJAX de base ;-)
0
tagman99 Messages postés 29 Date d'inscription mercredi 15 octobre 2008 Statut Membre Dernière intervention 28 octobre 2008
17 oct. 2008 à 09:46
g pa compris!
tu veux afficher le programme des emissions diffusés par la radio?
-1
hani_ Messages postés 333 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 18 novembre 2009 20
17 oct. 2008 à 09:54
non il veux le nom de l'emmission en cours de maniere dynamique. heure par heure jour par jour
-1
tagman99 Messages postés 29 Date d'inscription mercredi 15 octobre 2008 Statut Membre Dernière intervention 28 octobre 2008
17 oct. 2008 à 10:16
ah! ok
donc il faudrait du javascript pour tester l'heure et changer le nom du programme qui passe...

d'acc
fait un code qui utilise onChange sur le lecteur (pour testes les changements de progamme) ensuite tu recuperes le nom de tes programmes et tu l'affiche dans ta page
-1