Si l'horloge du serveur de base de données est correcte, vous pouvez simplement utiliser une requête de la forme:
SELECT * FROM <table name> WHERE <time field> >= NOW();
Cependant, pour garder votre question que je vais pour ...
$nextWeek = time() + (7 * 24 * 60 * 60);
$queryString = 'SELECT * FROM affbanners WHERE active=1 AND timedate >= "'.$nextWeek.'"' ORDER BY RAND() LIMIT 1';
Cela dit, vous voudrez peut-être considérer si vous voulez que les bannières soient sélectionnées de manière "équilibrée" (plutôt que simplement aléatoire). (C.-à-:. Pour que chaque bannière obtient un taux de vue à peu près similaire)
Pour ce faire, vous aurez besoin de:
- Ajouter un nombre « view » à chaque bannière (qui est incrémenté lorsqu'une bannière est vue). Vous pouvez bien sûr utiliser les clics, etc. si vous les suivez.
Utilisez une requête comme ...
SELECT * FROM affbanners OÙ active = 1 ET timedate> = « . $ NextWeek. '"' ORDER BY view_count ASC LIMITE 1
Par Ce faisant, vous équilibrerez le nombre de vues au fil du temps.
MISE À JOUR
Si tel est le cas, je serais très tenté d'avoir des champs startdate et enddate dans votre base de données (lorsque la bannière peuplée est créée) et utiliser une requête comme ...
SELECT * FROM affbanners WHERE active=1 AND startdate >= NOW() AND enddate <= DATE_ADD(NOW(), INTERVAL 1 WEEK) ORDER BY view_count ASC LIMIT 1
Vous aurez bien sûr besoin de suivre les vues, les clics, etc. Cela dit, c'est un problème très résolu, donc il pourrait être plus facile d'utiliser quelque chose comme OpenX. (Il existe une version open source que vous pouvez télécharger.
$ nextWeek est défini lors de la création de la bannière et pas à nouveau. Il devrait donc être timedate> = time(); ? – friendishan
Dans ce cas, utilisez simplement "WHERE time> = NOW()". Cependant, je serais tenté de ne pas essayer de stocker une date «future» dans la bannière, car il est assez insignifiant de stocker une date relative comme celle-ci. Au lieu de cela, pouvez-vous stocker "vivre de" et "vivre jusqu'à" dates? Je soupçonne que cela vous faciliterait la vie à long terme. –
ok ce que je suis en train de faire est .. exposition de rotation hebdomadaire bannière bannière. – friendishan