Sei sicuro che la query che esegui recuperi effettivamente degli eventi?
Verificalo, per esempio fatti restituire la stringa contenente la query e poi eseguila a mano sul DB, vedi cosa recupera.
Comunque io toglierei il controllo if($num_eventi > 0)
tanto comunque devi inizializzare l'array $data (e non lo fai, così se non trova eventi lo script muore senza fare niente, invece dovrebbe sempre restituire qualcosa, anche l'array vuoto, oppure un messaggio "non ho trovato niente") e se non vengono trovati eventi resta vuoto perché non si entra nel while.

Rispondi quotando
