salve
avrei bisogno di qualche suggerimento per la creazione di un sito interno all'ufficio per la pianificazione delle ferie
ho già fatto qualcosa ma credo che si possa migliorare sensibilmente
la mia idea è la seguente
creare un database con varie tabelle correlate fra loro:
1 tabella con l'elenco dei colleghi dell'ufficio
1 tabella con l'elenco dei tipi di ferie (vacanza, medico, permessi speciali, ecc)
1 tabella con l'elenco dei piani ferie:
andrea - vacanza - dal - al
luca - permesso - dal - al
ecc...
la pagina php dovrebbe (e lo fa già) recuperare questi dati e disegnare un calendario in questo modo (tabella html):
codice:
| | jan |
| DAYS> |1|2|3|4|5|6|..|31|
|Andrea |x|x|x|x| | | | |
|Luca | | |x|x|x|x|x | |
|Marco | | | | | | | | |
|John | |x| | | |x| | |
| | feb |
| DAYS> |1|2|3|4|5|6|..|28|
|Andrea | | | | | | | | |
|Luca | | | |x| | | | |
|Marco |x|x|x| | | |x |x |
|John | |x| | | |x| | |
| | mar |
| DAYS> |1|2|3|4|5|6|..|31|
|Andrea | | | | | | | | |
|Luca | | |x| |x|x| | |
|Marco | | | | |x| | | |
|John | |x|x|x| |x| | |
| | apr |
| DAYS> |1|2|3|4|5|6|..|30|
|Andrea | |x| | | | | | |
|Luca |x|x|x| | | | | |
|Marco | | | | | |x|x |x |
|John | | | | | | | | |
ovviamente coloro diversamente i giorni che corrispondono a sabato e domenica (solo nella riga dei numeri)
attualmente lo script funziona in questo modo:
Codice PHP:
ciclo for da 1 a 12
ciclo da 1 a fine mese //prima riga della tabella
scrivo le celle col numero dei giorni di quel mese
fine ciclo
recupero l'elenco dei colleghi
ciclo foreach collega //dalla seconda riga in poi della tabella
query che recupera il numero di piani per quel dipendente
se il conteggio è < 1
scrivi celle vuote nella riga di quel collega x tutto il mese
se il conteggo è > 1
foreach piano ferie di quel collega
ciclo da 1 a fine mese
la data x è compresa nelle date del piano del collega Andrea?
se sì flag = 1
fine ciclo
se flag = 1
coloro la cella
else
cella vuota
fine if
fine foreach
fine if
fine foreach
fine ciclo
quello che sto migliorando ora è l'impostazione della tabella piani ferie sul database suddividendo le date nelle sue parti elementari:
dal anno
dal mese
dal giorno
al anno
al mese
al giorno
così posso fare una query puntuale per il dipendente e per il mese in questione così cerco SOLO i piani ferie che iniziano in quel mese per quel collega
però secondo me è ancora migliorabile soprattutto sul test della data
pensavo che, forse, invece di disegnare la tabella facendo il test
giorno per giorno potrei prima riempire una matrice per il collega
in questione con tanti valori quanti sono i giorni del mese e facendo
lì i test se il giorno è compreso o meno
e poi una volta creata la matrice disegno velocemente la riga (con un ciclo for + agile in quanto deve solo leggere il valore dell'array alla posizione x) della tabella per il collega
svuoto la matrice e vado avanti col collega numero 2
avete suggerimenti da darmi per ottimizzare questo progetto?
secondo voi il database è strutturato bene?
pensate che debba modificare le colonne del database dei piani ferie?
avrebbe senso salvare sul quella tabella la data iniziale e il numero di giorni di ferie al posto della data finale?
grazie
ciao