Ciao io ho realizzato qualcosa di simile con questa soluzione
Tab APPUNTAMENTI
Idappuntamento
Idcliente
Idtrattamento
....
....
...
Iddata
Idorario
Idtempo
Idorario è un numero che identifica la posizione in un array di orario
orario[1]="8:30"
orario[2]="9:00"
orario[3]="9:30"
orario[4]="10:30"
.....
facendo in questa maniera hai sia l'orario di inizio che quello di fine con il dato Idtempo
Idorario=1
Idtempo=2
orariofine=orario[Idorario+Idtempo]="9:30"
quando fai la select per la tendina degli orari disponibili escludi quelli occupati facendo una select nella tabella Appuntamenti
te lo scrivo non in codice php
for var =1 to orarioultimo
se esiste Idorario allora var=var+idtempo
altrimenti scrivi orario[var]
poi se hai dei tempi fissi per il tipo di trattamento nella stessa maniera verifichi se c'è anche abbastanza tempo per il trattamento
spero di esserti stato utile