Scusa, ma non ti conviene modificare al volo la query senza sbatterti con il "nascondere" gli altri libri?

Tu dovresti avere una cosa del genere:
Codice PHP:
// Ometto connessione al databese e controlli vari
$query mysql_query("SELECT * FROM libri");
while(
$row mysql_fetch_assoc($query)){
   ...

Adesso basta che passi l'autore in qualche modo (es un form) e ti basta fare:
Codice PHP:
$where '';
if(isset(
$_POST['autore'])){
    
// Ipotizzo autore come campo di testo. 
    
$autore mysql_real_escape_string($_POST['autore']);
    
$where "WHERE autore = '$autore'";
}


$query mysql_query("SELECT * FROM libri $where);
//Questo non ti cambia
while($row mysql_fetch_assoc($query)){
   ...