Page 1 sur 1

Apparition...

Posté : 02 mars 2014, 12:10
par Rick44
Bonjour,

Voici un exemple de ce que j'aimerai faire:

Faire apparaître un texte un ou plusieurs jours, pendant seulement un temps d'une heure par exemple.

Exemple: Faite apparaître un texte seulement le lundi et le jeudi de 19h00h à 21h00

Merci pour vos réponses.

Amicalement,

Rick44

Re: Apparition...

Posté : 02 mars 2014, 13:42
par sirakawa
En gros:
mettre le texte dans une div hidden;
body onload déclenche un javascript qui, suivant jour et heure, rend la div visible ou non.

Re: Apparition...

Posté : 03 mars 2014, 04:56
par Rick44
Bonjour sirakawa,

Voilà c'est exactement ça.

Comment réaliser ce petit miracle :)

Merci pour vos réponses.

Amicalement,

Rick44

Re: Apparition...

Posté : 03 mars 2014, 17:58
par Ryle
Le forum FAQ contient des explications détaillées sur la manipulation des dates :
:arrow: Quelques petites manipulations avec les dates (PHP/MySQL)

Il devrait te permettre de tester en php si la date / heure du jour est comprise dans ton intervalle d'affichage, et le cas échéant de faire apparaître ou non du bloc à présenter dans ce cas :)

Nota : il vaut mieux faire apparaître le bloc à partir d'une condition php que de javascript... cela évite de le charger et de le rendre disponible dans le code source de la page lorsqu'il n'a pas lieu d'y être...

Re: Apparition...

Posté : 03 mars 2014, 21:16
par Rick44
Bonjour Ryle,

J'ai été voir les liens que tu propose mais je ne vois pas comment faire.

Amicalement,

Rick44

Re: Apparition...

Posté : 04 mars 2014, 22:26
par Ryle
En combinant les éléments présentés dans le topic FAQ tu peux :
- Obtenir la date du jour
- Obtenir le jour de la semaine d'une date précise

Tu peux donc dans un premier temps savoir si l'utilisateur consulte le site un Lundi ou un Jeudi :)

En complément, la doc te guidera sur l'utilisation de la fonction date() pour également connaitre l'heure du serveur. Il ne te restera plus qu'à vérifier si celle-ci est comprise entre 19 et 21 et combinée au test précédent devrait résoudre ton problème :)

Re: Apparition...

Posté : 05 mars 2014, 08:28
par Rick44
Bonjour Ryle,

J'ai regardé la FAQ et j'ai trouvé ça > http://www.abciweb.net/afficher_masquer ... sation.php mais bon, j'avoue que c'est un peu du chinois pour moi et en plus le combiner avec l'heure et la date pour le faire apparaître et disparaître automatiquement me parait pas simple pour moi.

Je vais donc faire disparaître et apparaître mon texte manuellement en mettant <!--texte-->.

Merci pour vos réponses et votre patience.

Amicalement,

Rick44

Re: Apparition...

Posté : 05 mars 2014, 21:22
par Ryle
Rooh bah non, c'est se prendre la tête trop souvent à ajouter et enlever des commentaires quand on peut l'automatiser, d'autant que c'est assez simple à faire avec php :)

En gros, supposons que dans ta page tu ais :

Code : Tout sélectionner

... BLOC HTML 1 BLOC HTML 2 BLOC HTML 3 ...
Et que le bloc 2 ne doit être affiché que 2 fois par semaine

Grace à php, tu peux facilement mettre une condition d'affichage de ton bloc :
...
BLOC HTML 1
<?php if ( maConditionEstVraie ) { ?>
BLOC HTML 2
<?php } ?>
BLOC HTML 3
...
Le bloc n'apparait désormais que si maConditionEstVraie est vrai. Il ne reste plus qu'à définir maConditionEstVraie :)

Ta condition est double, il faut d'un côté que l'on soit un lundi OU un jeudi ET qu'il soit entre 19 et 21h.

Première étape, savoir quel jour de la semaine on est. Un petit coup d'oeil à la doc et tu découvre que la fonction date() te permet d'avoir cette info facilement :
N | Représentation numérique ISO-8601 du jour de la semaine (ajouté en PHP 5.1.0) | 1 (pour Lundi) à 7 (pour Dimanche)
Donc si date('N') retourne 1, on est lundi ; si elle retourne 4 on est jeudi ; si elle retourne une autre valeur, on s'en moque :)

On obtient donc le test suivant, pour que le bloc 2 n'apparaissent que les lundi et jeudi :
<?php if ( date('N') == 1 || date('N') == 4 ) { ?>
Deuxième étape, il faut que l'heure soit supérieure à 19h ET inférieure à 21h. Petit coup d'oeil à la doc de la fonction date() :
G | Heure, au format 24h, sans les zéros initiaux | 0 à 23
Donc si date('G') est supérieur à 19 et inférieur à 21, on est dans le bon créneau horaire

On obtient donc le test suivant :
<?php if (  (date('N') == 1 || date('N') == 4) && date('G') >= 19 && date('G') <=21 ) { ?>
affichage du bloc si jour = lundi (1) ou (||) jour = jeudi (4) ET (&&) heure >= 19 ET (&&) heure <= 21

Cela peut naturellement être optimisé, amélioré, complété, commenté, annoté, toussa.. mais logiquement comme ça, cela devrait surtout être assez clair pour te permettre de le mettre en oeuvre :)

Bon courage