Lo que estás haciendo mal es que la función te devuelve una fila del resultado, no el resultado de la consulta.
Esto no es un problema de base de datos si concepto de programación.
Código PHP:
function selecciona_todas_respuesta($id)
{
$sql="select * from respuesta where codtema=".$id. " order by fecha";
$res=mysql_query($sql)or die ("ERROR accediendo a la base de datos.".mysql_error());
return $res;
};
$respuestas=selecciona_todas_respuestas($id)
while( mysql_fetch_array($row2=$respuestas) )
{
//aqui igual que antes, se muestran las respuestas
}
Un saludo.