Hola
Bueno, pues claro que lo puedes mejorar pues en el link podrias enviar el idespecialidad, es decir que el select max lo harias luego de insertar el dato de la especialidad para que el link lleve ese valor
Pero pues sirve igual que como lo planteas, de obtener el id maximo de especialidad en la pagina donde guardas la pregunta y las respuestas
lo que pasa en ese caso es que tienes que hacer 2 consultas separadas, es decir, una consulta para el id y otra para el update, tu ya tienes la segunda, lo que te faltaria es esto
Código PHP:
<?
$query_id_esp = mysql_query("Select max(id_esp) from especialidad");
$r_id_esp = mysql_fetch_array($query_id_esp);
//puse el echo para que veas el id, pero pues lo puedes quitar sin //problema
echo $id_esp = $r_id_esp[0];
Y ahora si la variable $id_esp tiene el valor numerico del id, porque tu tenias solo la consulta, y le asignabas a $id_esp una cadena que contenia la consulta y pues es por eso que no te estaba guardando el valor.
Espero te funcione bien, y si no por aqui andare, suerte.