Il codice qui sotto non è stato testato comunque è un buon spunto.
Si premette che la pagina si chiami :http://www.miosito.it/visualizzadati.php
La connessione al DB non è scritta ma comunque va fatta all'inizio della pagina.
La variabile che contiene il numero del record da cui iniziare la visualizzazione si chiama "cominciada".

codice:
   <?php 
	 //-------- All'inizio della pagina
	 if (isset($_GET['cominciada'])) {
	  if (is_numeric($_GET['cominciada'])) {
		 $start = $_GET['cominciada'];
		} else {
		 $start = 0;
		} // 
	 } else {
	  $start = 0;
	 } // if (isset($_GET['cominciada'])) 
	 //------- N° di record per pagina
	 $recordPerPagina = 20; ?>

   <?php 
	  //-------- Conta dei records della tabella
		$queryList = "select count(*) as compteEnreg "
               . " from mia_tabella";
    $resList   = mysql_query($queryList) or die(mysql_error());
    list($contaRecord) = mysql_fetch_array($resList); ?>

	 <?php 
	  //------- Query con limit
		$queryList = "select * "
              . " from mia_tabella"
              . " LIMIT $start, $recordPerPagina";
	  //------- Qui il codice che stampa a video i records  ?>

    
    <table cellspacing=1 bordercolor="black">
     <tr>
		  <td class="text">Pagine :</td> 
			<td class="text"><?
       //----- Calcolo del numero di pagine
       $x	  = $contaRecord/$recordPerPagina ;
       $y   = (integer) $x;
       //----- Nel caso in cui ci fosse una pagina residua
       if ( $x <> $y ) { $x++; }
       $numero_pagine = $x;
       $index         = 1;
       while ($index <= $numero_pagine) {
        $cominciaDa = ($index - 1) * $recordPerPagina; ?>		
			  "><? print $index?> <?
        $index++;	
			 } // while ($index <= $numero_pagine) ?>
			</td>
		 </tr>
    </table>