Il fatto è la clausola order by date viene applicata al campo date DOPO che questo è stato formattato per le date italiane, mentre l'ordinamento per date in Mysql si basa sulle date inglesi.
Per risolvere il problema, è sufficiente che dai un nome diverso al campo data in formato italiano nella query:
Codice PHP:
$query="SELECT id_video, title, date, DATE_FORMAT(date, '%d-%m-%Y') AS data_ita, type FROM video, section WHERE video.id_section=section.id_section AND active='1' ORDER BY date DESC LIMIT 0,5";
Questo dovrebbe risolvere il problema