Merci de ces conseils...
le temps a passé, j'ai un peu avancé grâce à ton aide, et j'ai réussi à faire fonctionner quelque chose sur la base de ces explications :
https://stackoverflow.com/questions/518 ... 95#5186095
Notamment en bas, où le gars fournit un exemple fonctionnel, que j'ai décortiqué et adapté.
Aujourd'hui, j'ai quand même un peu de problème à comprendre cette requete :
Code : Tout sélectionner
$sql = "SELECT EV.*
FROM `events` EV
RIGHT JOIN `events_meta` EM1 ON EM1.`event_id` = EV.`id`
WHERE ( DATEDIFF( '$nowString', repeat_start ) % repeat_interval = 0 )
OR (
(repeat_year = $year OR repeat_year = '*' )
AND
(repeat_month = $month OR repeat_month = '*' )
AND
(repeat_day = $day OR repeat_day = '*' )
AND
(repeat_week = $week OR repeat_week = '*' )
AND
(repeat_weekday = $weekday OR repeat_weekday = '*' )
AND repeat_start <= DATE('$nowString')
)";
Enfin, si, je la comprends, mais j'ai besoin de mettre en place une date de fin.
Dans le script actuel, il existe une date de début : repeat_start
Mais dans mon usage, j'ai aussi besoin d’arrêter la récurrence à une date de fin : repeat_end
Voilà donc comment j'imagine mettre en place ce besoin, une fois le champs ajouté dans la base de données évidemment.
Code : Tout sélectionner
$sql = "SELECT EV.*
FROM `events` EV
RIGHT JOIN `events_meta` EM1 ON EM1.`event_id` = EV.`id`
WHERE ( DATEDIFF( '$nowString', repeat_start ) % repeat_interval = 0 )
OR (
(repeat_year = $year OR repeat_year = '*' )
AND
(repeat_month = $month OR repeat_month = '*' )
AND
(repeat_day = $day OR repeat_day = '*' )
AND
(repeat_week = $week OR repeat_week = '*' )
AND
(repeat_weekday = $weekday OR repeat_weekday = '*' )
AND repeat_start <= DATE('$nowString')
AND repeat_end >= DATE('$nowString')
)";
ça me parait facile pour la 2e partie de la requête, après le OR, mais pour la partie d'avant, celle qui utilise :
WHERE ( DATEDIFF( '$nowString', repeat_start ) % repeat_interval = 0 )
j'ai du mal à l'adapter pour un usage avec une date de fin...
Je ne suis pas sûr qu'ajouter cela soit correct :
WHERE ( DATEDIFF( '$nowString', repeat_start ) % repeat_interval = 0 )
AND ( DATEDIFF( repeat_end, '$nowString' ) % repeat_interval = 0 )
Pourriez vous m'aider ?
merci de votre patience
Merci de ces conseils...
le temps a passé, j'ai un peu avancé grâce à ton aide, et j'ai réussi à faire fonctionner quelque chose sur la base de ces explications :
https://stackoverflow.com/questions/5183630/calendar-recurring-repeating-events-best-storage-method/5186095#5186095
Notamment en bas, où le gars fournit un exemple fonctionnel, que j'ai décortiqué et adapté.
Aujourd'hui, j'ai quand même un peu de problème à comprendre cette requete :
[code]
$sql = "SELECT EV.*
FROM `events` EV
RIGHT JOIN `events_meta` EM1 ON EM1.`event_id` = EV.`id`
WHERE ( DATEDIFF( '$nowString', repeat_start ) % repeat_interval = 0 )
OR (
(repeat_year = $year OR repeat_year = '*' )
AND
(repeat_month = $month OR repeat_month = '*' )
AND
(repeat_day = $day OR repeat_day = '*' )
AND
(repeat_week = $week OR repeat_week = '*' )
AND
(repeat_weekday = $weekday OR repeat_weekday = '*' )
AND repeat_start <= DATE('$nowString')
)";
[/code]
Enfin, si, je la comprends, mais j'ai besoin de mettre en place une date de fin.
Dans le script actuel, il existe une date de début : repeat_start
Mais dans mon usage, j'ai aussi besoin d’arrêter la récurrence à une date de fin : repeat_end
Voilà donc comment j'imagine mettre en place ce besoin, une fois le champs ajouté dans la base de données évidemment.
[code]
$sql = "SELECT EV.*
FROM `events` EV
RIGHT JOIN `events_meta` EM1 ON EM1.`event_id` = EV.`id`
WHERE ( DATEDIFF( '$nowString', repeat_start ) % repeat_interval = 0 )
OR (
(repeat_year = $year OR repeat_year = '*' )
AND
(repeat_month = $month OR repeat_month = '*' )
AND
(repeat_day = $day OR repeat_day = '*' )
AND
(repeat_week = $week OR repeat_week = '*' )
AND
(repeat_weekday = $weekday OR repeat_weekday = '*' )
AND repeat_start <= DATE('$nowString')
AND repeat_end >= DATE('$nowString')
)";
[/code]
ça me parait facile pour la 2e partie de la requête, après le OR, mais pour la partie d'avant, celle qui utilise :
WHERE ( DATEDIFF( '$nowString', repeat_start ) % repeat_interval = 0 )
j'ai du mal à l'adapter pour un usage avec une date de fin...
Je ne suis pas sûr qu'ajouter cela soit correct :
WHERE ( DATEDIFF( '$nowString', repeat_start ) % repeat_interval = 0 )
AND ( DATEDIFF( repeat_end, '$nowString' ) % repeat_interval = 0 )
Pourriez vous m'aider ?
merci de votre patience