2011-07-25 3 views
3

Salut J'ai lu beaucoup de sujets récurrents, mais toujours aucune idée sur la façon d'implémenter cette logique dans mon application de calendrier. J'ai ce tableau:Événement récurrent

id | title | start    | end     | recurring 
1 | test1 | 2011-07-25 08:30:00 | 2011-07-25 10:30:00 | day 
2 | test2 | 2011-07-26 08:30:00 | 2011-07-26 10:30:00 | week 
3 | test3 | 2011-07-26 08:30:00 | 2011-07-26 10:30:00 | month 
4 | test4 | 2011-07-26 08:30:00 | 2011-07-26 10:30:00 | year 

Lorsqu'un utilisateur voir le calendrier, j'ai les paramètres envoyés à une URL pour récupérer les données de la base de données. Par exemple:

Vue du mois: http://www.domain.com?start=2011-07-01&end=2011-07-31

Vue de la semaine: http://www.domain.com?start=2011-07-25&end=2011-07-29

Ce que j'est ce jusqu'à présent:

SELECT * CASE recurring WHEN "day" THEN IF(DATE_FORMAT(CURDATE(),"%j") = DATE_FORMAT(e.start,"%j"),1,0) WHEN "week" THEN IF(DATE_FORMAT(CURDATE(),"%w") = DATE_FORMAT(e.start,"%w"),1,0) END FROM event; 

Il peut récupérer qu'une seule fois ... mais si Je vois le calendrier pour la semaine prochaine 2011-08-01 au 2011-08-05, ça ne marchera pas.

Ma question est, comment puis-je récupérer les événements récurrents en fonction des paramètres d'URL? Toute aide et conseil est grandement appréciée. PS: J'ai trébuché sur ce fil: PHP 5.3 DateTime for recurring events et il semble proche de ce dont j'avais besoin mais juste que je ne peux pas comprendre dans mon cas comment l'implémenter dynamiquement avec mes dates de début et de fin.

+1

pourrait être une bonne idée de nous montrer un code que vous utilisez actuellement pour extraire des données de votre base de données. –

+0

Que signifie la date de fin? Que par la suite, la date récurrente n'est plus récurrente? Comment savez-vous qu'un événement récurrent n'est plus récurrent? Je ne pense pas que votre conception actuelle puisse traiter la récurrence dans les événements de manière appropriée. – Jacob

+0

Je voudrais éditer votre question pour inclure ce code afin que d'autres le voient tout de suite. –

Répondre

0

aller vérifier cette question SO: How to calculate the difference between two dates using PHP?

calculer juste la différence entre GET [ 'start'] et GET [ 'fin'] et "traduire" qui en 'jour', 'semaine', « mois ', ou' année '.

+1

C'est à partir du niveau PHP, mais je dois d'abord récupérer les enregistrements récurrents de la DB d'abord à droite? Le SQl me tue .. – pakito

0

c'est pour la semaine et si u changement semaine au mois etc .. il va fonctionner

$sql = "Select form tablename where start > '".$_GET['start']."' and end = '".$_GET['end']."' where recurring = 'week'"

+0

Je crois que vous avez mal compris ma question. Votre instruction sql ne récupère qu'une fois pour la date d'événement donnée. Ce que je veux, c'est récupérer un événement "hebdomadaire" si le récurrent est réglé sur "semaine". Mais merci quand même. – pakito

Questions connexes