Ciao ragazzi ho un problema sulla paginazione dei dati presi dal DB.

Riesco a visualizzare i record suddivisi per pagina in questo modo

Codice PHP:
« Pagina Indietro 1 2 3 4 5 Pagina Avanti » 

Di seguito il codice
Codice PHP:
  
    $x_pag 
5;

    
$page = isset($_GET['page']) ? $_GET['page'] : 1;    
    

    if (!
$page || !is_numeric($page)) $page 1


    
$all_rows mysql_num_rows(mysql_query("SELECT idRubrica FROM rubrica"));


    
$all_pages ceil($all_rows $x_pag);


    
$first = ($page 1) * $x_pag;

    
    
$leggi"SELECT * FROM rubrica Order By idRubrica ASC LIMIT $first$x_pag";

    
$query mysql_query($leggi);

     if (
$all_pages 1){
        if (
$page 1){
            echo 
"<a href=\"" $_SERVER['PHP_SELF'] . "?page=" . ($page 1) . "\">";
            echo 
"« Pagina Indietro</a>&nbsp;";
        }


    for (
$p=1$p<=$all_pages$p++){

        if (
$p == $page){
            echo 
"<b>" $p "</b>&nbsp;";
        }else{
// per tutte le altre pagine stampo il link
            
echo "<a href=\"" $_SERVER['PHP_SELF'] . "?page=" $p "\">";
            echo 
$p "</a>&nbsp;";
        }
        
    }
    if (
$all_pages $page){
        echo 
"<a href=\"" $_SERVER['PHP_SELF'] . "?page=" . ($page 1) . "\">";
        echo 
"Pagina Avanti »</a>";
        } 
    } 
funziona non ho problemi, l'unica cosa è come faccio a non elencare tutte le pagine, ovvero una cosa del genere

Codice PHP:
« Pagina Indietro 1 2 3 ................. 15 Pagina Avanti »  Ultima pagina 
ed eventualmente portarmi anche all'ultima pagina?