Ciao, ho un problema con questa query suggeritami da Sishandrea:
Cito la query
poi ogni anno
-- Aggiorna le festività fisse
UPDATE festivita
SET data = DATE_FORMAT(CONCAT(YEAR(CURDATE()), '-', MONTH(data), '-', DAY(data)), '%Y-%m-%d')
WHERE tipo = 'FISSO';
-- Aggiorna Pasqua e Pasquetta
UPDATE festivita
SET data = :D_pasqua
WHERE NOME = 'PASQUA';
UPDATE festivita
SET data = :D_Pasquetta
WHERE NOME = 'PASQUETTA';
SELECT * FROM festivita;
passi il parametro tipo data
D_pasqua=easter_date(annodaconsiderare) e D_Pasquetta (D_pasqua+1)
tutto lato MySql.
questa sarebbe la tabella:
MariaDB [gbgarage_test]> SELECT * FROM gbgar_festivita;
+----------+-----------------------+------------+-----------+
| ID_FESTA | FESTIVITA | DATA | TIPO |
+----------+-----------------------+------------+-----------+
| 1 | capodanno | 2026-01-01 | fisso |
| 2 | epifania | 2026-01-06 | fisso |
| 3 | liberazione | 2026-04-25 | fisso |
| 4 | lavoratori | 2026-05-01 | fisso |
| 5 | repubblica | 2026-06-02 | fisso |
| 6 | ferragosto | 2026-08-15 | fisso |
| 7 | san francesco | 2026-10-04 | fisso |
| 8 | ogni santi | 2026-11-01 | fisso |
| 9 | immacolata concezione | 2026-12-08 | fisso |
| 10 | natale | 2026-12-25 | fisso |
| 11 | santo stefano | 2026-12-26 | fisso |
| 12 | pasqua | 2026-04-05 | variabile |
| 13 | pasquetta | 2026-04-06 | variabile |
+----------+-----------------------+------------+-----------+
13 rows in set (0,001 sec)
1° problema:
non ho capito bene come passo i parametri alla query per quanto riguarda l'aggiornamento delle date festive variabili.
Nel senso che io la query la devo innescare usando una input di un form.
Se la input è riempita deve essere eseguita la query update sulla tabella di cui sopra.
Per ora lascio perdere l'idea di automatizzare la query al 1 gennaio o roba del genere.
Prima devo capire come gestirla manulamente da console mysql e da php
Il dati, di una input quindi arriva via $_Post allo script che compie varie operazioni, e dal momento che esiste già, e compie vari aggiornamenti su altre tabelle, mi costa poco aggiungere tre query per aggiornare le date festive fisse e variabili.
Ma non ho capito bene come devo fare perché qua mi viene suggerito di fare tutto lato mysql ma easter_date è una funzione php. Mi spiegate meglio sintatticamente dovrei costruirla?
Facendo finta di eseguire questa update direttamente in console mysql tanto per capire come deve funzionare, come dovrei scriverla per passare quei parametri. ?
Insomma non riesco a capire come sfruttare questo suggerimento.
secondo problema:
La tabella festività mi serve per avere una base di dati che vengono prelevati e confrontati con la $data_servizio, per determinare se essa è festiva o feriale.
Tuttavia, i servizi che vengono inviati negli ultimi giorni dell'anno solare ma riferiti alle prime date del nuovo anno, devono poter contare su una tabella festività che contempli le date festive del nuovo anno anche se esso non è ancora iniziato.
In pratica il momento ideale per aggiornare la tabella è uno dei giorni compresi tra il 26 e il 31 dicembre.
Cioè subito dopo l'ultimo giorno festivo fisso, cosicché se devono essere assegnati servizi per i primi gg del nuovo anno le date festive sarebbero già aggiornate.
Quindi secondo me aggiornare le date festive fisse con l'istruzione curdate non è utilizzabile cosi come suggerita.
O posso usare una cosa tipo:
SET data = DATE_FORMAT(CONCAT(YEAR+1(CURDATE()), '-', MONTH(data), '-', DAY(data)), '%Y-%m-%d')
WHERE tipo = 'FISSO';
o una cosa del genere?
Se non ho capito male questa query prende in considerazione il fatto che venga eseguita nell'anno che interessa mentre servirebbe invece che venisse eseguita qualche giorno prima, quindi quando l'anno corrente è ancora quello precedente.
Grazie per i suggerimenti.
Filippo P.