Проблемът е, че в горната част на страницата стартирате html изхода, независимо дали потребителят иска да види файловете за изтегляне, или иска да изтегли самия файл. В този момент файлът, който трябва да бъде изтеглен, се превръща в html страница.
Вашият код трябва да започне с проверка дали е зададен параметърът id. Ако не, тогава започвате да генерирате html страницата. Ако да, тогава четете файла от db, задавате заглавките и изпращате съдържанието обратно.
Или просто използвайте друга php страница за показване на списъка с файлове и изтегляне на един от файловете.