Well, it makes life easier if you use it logically as well. While I can follow your code, it makes more sense to just use the while() loop instead of the do{} while(). Nothign wrong with what you have, it's just personal coding preference.
You call the values into the associative array twice. It's really not needed. I would also suggest that perhaps use you mysql_fetch_array() and then define what type of array you want. Gives you more options. But that's just another personal preference.
As for an example, here's how my code version of your stuff work, with the minor fix:
<?php
$Recordset1 = mysql_query($query_Recordset1, $seaman) or die(mysql_error());
/*
I got rid of this, because you don't seem to use it here. If you do use it, uncomment it. If not, it's not necessary.
*/
//$totalRows_Recordset1 = mysql_num_rows($Recordset1);
while($row_Recordset1 = mysql_fetch_array($Recordset1, MYSQL_ASSOC))
{
?>
<a href="details.php?surname=<?= $row_Recordset1['surname']; ?>">
<?= $row_Recordset1['surname']; ?>
</a><?
}
php mysql_free_result($Recordset1);
?>
You don't need to redeclare the associative array and then perform a while loop. But what you had was a good start and effort.
~Brett