Page 1 sur 1

Texte aléatoire tous les lundis

Posté : 28 sept. 2008, 22:47
par Spanish_
Bonjour ,

Sur la page d'accueil du site que je développe actuellement je voudrais afficher un texte aléatoirement tous les lundis.
je bute sur la manière de procéder.

Code : Tout sélectionner

<?php require_once('infos_connexion.php'); ?> // requete qui permet d'afficher aléatoirement mon texte <?php mysql_select_db($mysql_dbnom, $db); $aleatoire = sprintf("SELECT * FROM compteur_click ORDER BY RAND() LIMIT 1;"); $recup_aleatoire = mysql_query($aleatoire, $db) or die(mysql_error()); ?> <?php if (DATE("D") == "Mon" ) { while ($tab_aleatoire = mysql_fetch_array($recup_aleatoire)) { ?> <table> <tr> <td> <?php echo $tab_aleatoire['description']; ?> </td> </tr> </table> <?php } } ?>
Si je fais ça, Dès que le jour sera un lundi , il va m'afficher aléatoirement un texte.

Mais plusieurs problèmes se posent du coup:
-Pendant toute la journée du lundi , le texte va s'afficher aléatoirement a chaque venue sur le site or je voudrais que le meme texte soit afficher tout au long de la journée que soit le lundi à 9h ou à 20h.

-2ème souci , c'est que si le jour est autre le lundi il n'affiche plus rien , je voudrais qu'il conserve le meme texte que celui du lundi et ce pour toute la semaine.

J'espère je suis clair dans mles explications.

Avez vous une idée comment je peux procéder!

Posté : 28 sept. 2008, 23:12
par jojolapine
Si j'ai bien compris ce que tu voulais faire:
Tu as sur ton site un bout de texte affiché toute la semaine, et tu aimerais que son contenu change chaque lundi?

Dans ce cas là, il faudrait stoquer quelque part ce texte (ou plutôt son identifiant, car j'imagine que tu as une bdd?)
Je pense qu'un petit fichier .txt contenant la référence voulu, devrait suffire, non?
Ensuite pour le changer tout les lundi, et bien soit tu le fait "à la main" via un panel admin, soit tu fait une tache cron,
soit dans ton script d'affichage, tu faits une vérification sur la date de mise à jour du fichier .txt, ainsi le premier visiteur qui arrivera ce jour là, déclenchera la mise à jour...
Je sais pas si j'ai été très clair... n'hésite pas à poser des questions ;)

Posté : 29 sept. 2008, 05:07
par Patriboom
Si tu n'as pas accès aux tâches Cron, la solution la plus simple est bien sûr de provoquer le choix par la visite du premier navigant du lundi.

Le marqueur, quant à moi, pourrait être aussi simple qu'un champ "date_affiche" dans ta table. Le serveur lit le message du dernier lundi. Si c'est lundi, il vérifie que le dernier lundi en question soit celui du jour courant. Si c'est celui du lundi précédent, on provoque un le tirage au sort d'une valeur de 1 à (nombre de messages disponibles) et up, l'heureux élu est marqué dans son champ "date_affiche" de la date courante et c'est lui qui est choisi pour la semaine.

Posté : 29 sept. 2008, 06:57
par sadeq
Le plus simple est de mettre le texte à afficher pendant la semaine dans un fichier que tu mets à jour chaque Lundi à partir de ta requête à sélection aléatoire.

Ton script doit alors vérifier, comme il le fait d'ailleurs, si le jour est un Lundi et à partir de là, décider s'il doit récupérer le texte à afficher soit de la requête si c'est un lundi ou, sinon, du fichier.

Voici donc l'algorithme:
  • 1. Au début du script : Tester si le jour de la date système est un LUNDI
    2. Si c'est un LUNDI : exécuter la requête, lire le texte trouvé, le stocker dans une variable et mettre à jour le fichier.
    3. Sinon, ce n'est pas un LUNDI : lire le texte à partir du fichier et le stocker dans une variable.
    4. Et suite au deux cas, on a un texte dans la variable mémoire qu'on peut afficher.
    Remarque : En cas d'erreurs de récupération du texte de la base ou du fichier, le texte à afficher reste vide et/ou afficher l'erreur.

Posté : 29 sept. 2008, 08:34
par caroube
Le point à noter est qu'il faut que tu sépares la sélection du texte à afficher (tirage au sort) de son affichage.

Tu peux également rajouter un champ "date limite" dans ta base de données dans lequel tu stockes la date du dimanche suivant. Par la suite, pour l'affichage, tu as
Dès que la première requête (faite le lundi) dépasse cette date, tu effaces le champ et tu remet la date limite sur le nouvel enregistrement.

Il ne te reste plus qu'à afficher le texte dont la date limite n'est pas nulle.

Avec ce principe tu peux d'ailleurs modifier ton système pour t'assurer que tous les textes seront affichés : tu n'effaces pas la date limite.
Le tirage au sort s'effectue sur les textes dont la date limite est nulle.
L'affichage se fait sur celui dont la date limite est la plus grande.

Et quand toutes les dates limites sont marquées, tu les remets toutes à null.