In this code you are attempting to link to an $id and $name, one can only assume, from a mysqli_query function which you have omitted.
However, I can see what you are attempting. Firstly, you need not specify echo on every line. Applying this to a snippet of your code changing
<?php
echo "<table>";
echo "<tr>";
?>
to
<?php
echo "<table>
<tr>";
?>
will produce the same result and save some typing.
This is what you are looking for.
<?php
$con = mysqli_connect("localhost", "my_user", "my_password", "my_db");
$sql = "SELECT * FROM `uploads`";
$qry = mysqli_query($con,$sql) or die(mysqli_error($con));
$table_content = "";
while($row = mysqli_fetch_assoc($qry)){
$id = $row['id'];
$name = $row['name'];
$table_content .= "<tr>
<td>Name</td>
<td><a href='listen.php?id=$id' target='_new'>$name</a></td>
</tr>";
}
echo "<table>".$table_content."</table>";
?>
This will produce a table with 2 columns, the first having the value 'Name' for each column, the second a link to the record ID with the records name as the text.
If you are after a table heading called 'Name' you will need to a row with
<th>Name</th>
Here I use mysqli_query as mysql_query is deprecated. mysqli_error is useful to include when querying your database. In the event the connection fails to execute the query it will provide a (not always useful) error, but atleast point you towads a solution.