o meglio...
il sistema sembra funzionare se ci sono eventi che durano più di un giorno. Nonostante ci sia <= e >= nella query gli eventi che durano 1 giorno non sono mostrati.

Stesso risultato usando la query
SELECT * FROM tabella WHERE '$data' BETWEEN inizio AND fine