Apparition...

Eléphanteau du PHP | 27 Messages

02 mars 2014, 12:10

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

Mammouth du PHP | 2278 Messages

02 mars 2014, 13:42

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.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 27 Messages

03 mars 2014, 04:56

Bonjour sirakawa,

Voilà c'est exactement ça.

Comment réaliser ce petit miracle :)

Merci pour vos réponses.

Amicalement,

Rick44

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 mars 2014, 17:58

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...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 27 Messages

03 mars 2014, 21:16

Bonjour Ryle,

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

Amicalement,

Rick44

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 mars 2014, 22:26

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 27 Messages

05 mars 2014, 08:28

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 mars 2014, 21:22

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
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...