Once headers are sent, they can't be recalled. So once you readfile(), you can't use header("Location:") or anything.
One way to solve this problem is to open that page up in a new window (so it displays a white page) and then when the user closes that window, your parent page refreshes with the new information.
i.e.
//download.php
echo '<a href="getdl.php?id=' . $whatever . '" target="_blank">the file name</a>';
//getdl.php
if(!empty($_GET['id'])){
(a query getting info)
(a query updating times downloaded)
header ("Content-Type: application/$ft");
header ("Content-disposition: attachment; filename=$fn");
header ("Content-Length: $fs");
readfile ($the_file);
Then, just add soem javascript to download.php that catches when its child window has closed and the page will reload.
~Brett