io partendo da quello che hai già realizzato farei così
1 definisco le durate
es:
taglio = 15
colore = 60
dopo di che nel momento in cui ho il dato relativo al servizio e alla durata consulto il db
*il problema fondamentale è che se ogni parrucchiere ha la giornata libera come dato base, se ho ben capito uno sceglie parrucchiere "tonio" , "colore" , 9:00
allora solo tonio non tutti i parrucchieri, avranno occupati i minuti dalle 9 alle 10:00 giusto?
il programma dovrà calcolare quanti spazi occupare , in questo caso tu hai costruito blocchi da 15 min quindi saranno 4se ho un'ora di inizio e un'ora di fine come fare a far riempire più di un campo di seguito
poi prenderà il campo 900 lo setterà a occupato
e ripeterà la cosa con il campo 915, 930, 945.
magari dando ad una variabile il nome del campo
ed incrementandola ad ogni passaggio
di 15 a meno che non finisca per 45 allora la incrementerà di 55
*oddio è una brutalità orrenda*
e setterà il campo ad occupato
il tutto come dicevo la fa per il numero di volte che hai calcolato prima
in base al servizio.
ahh assolutamente prima di tutto questo, dovrebbe fare la stessa cosa e salvarsi una flag se tutti i campi sono settati a liberi , se questa flag è verificata allora può essere occupato quel tempo, se no direi che deve restitutire un errore dicendo che non è possibile prenotare
cmq io rifarei il db se possibile