It looks like your loop is occurring for each row that you have. The reason you have the same entries for each row is because the you are looping over the directory contents for each row.
I'm including an example of how a page like this could be setup using a recordset, repeat region, and a separate download page based on the link from the results page. Please check these out to get an idea for how you could setup the listing and download pages.
When I created the results page I just added a recordset to select all of the records in my uploads table. Next I added the file name binding to the page to display it. I then added the link to the download page around the bindings. Next I added in the "?file=<?php echo $row_Recordset1['filename']; ?> to the url in the link. The last part was to select the display that I crafted and apply the repeat region to it. This made it show an entry for each record in my db.
Then on the download page I added the download server behavior, selected the directory and for the file name I set it to this:
<?php $_GET['file'] ?>
Please post back with any questions that you have about this.