Problemet är att du längst upp på sidan startar html-utmatningen oavsett om användaren vill se filerna som ska laddas ner, eller vill ladda ner själva filen. I det ögonblicket blir filen som ska laddas ner en HTML-sida.
Din kod bör börja med en kontroll om id-parametern är inställd. Om inte, börjar du skapa html-sidan. Om ja, läser du filen från db, ställer in rubrikerna och skickar tillbaka innehållet.
Eller använd bara en annan php-sida för att visa listan med filer och ladda ner en av filerna.