Cita:  $(document).ready(function($){
	$('#CAPA_A_MOSTRAR').dataTable(
			{"bJQueryUI": true,
			"sPaginationType": "full_numbers"
			})
      });
    
bueno aunque esto es Javascript( Jquery), te puede servir pero si lo que quieres es con PHP 
aqui te dejo una clase que "hice yo"  
 Código PHP:
    <?php
 
CopyRight: Armando Herrera
class paginador extends conexion {
 
    var $numRegistros = 10;
    var $inicio          = 0;
    var $totalRegistros;
    var $totalPaginas;
    var $conexion;
    var $query = NULL;
    var $pagina;
    var $tagSiguiente = "»";
    var $tagAtras       = "«";
    var $v_datos;
    var $variablesGet;
    
    function __construct($cnx){
        $this->conexion = $cnx;
    } 
 
    function totalRegistros(){
        $this->conexion->ejecutarConsulta($this->query);
        $this->totalRegistros = $this->conexion->numRows();
    }
    
    public function totalPaginas(){
        if($this->totalRegistros > 0){
            $this->totalPaginas = ceil($this->totalRegistros / $this->numRegistros);
        }else{
            $this->totalPaginas = 1;
        }
    }
    
    function paginar($query){
        if(empty($_GET[$this->pagina]) || !is_numeric($_GET[$this->pagina])){
            header("Location: ".$_SERVER['PHP_SELF']."?".$this->pagina."=1".$this->agregarGet());
            exit;
        }
        $this->query = $query;
        $this->totalRegistros();
        $this->totalPaginas();
    }
    
    function mostrarPaginacion(){
        if($this->totalRegistros) {
            echo '<ul>';
            if(($_GET[$this->pagina] - 1) > 0) {
                //echo "<li class=\"num\"><a href=\"?".$this->pagina."=".($_GET[$this->pagina]-1).$this->agregarGet()."\">".$this->tagAtras."</a></li>";
                echo "<li class=\"num\"><a href=\"".($_GET[$this->pagina]-1).$this->agregarGet()."\">".$this->tagAtras."</a></li>";
            }
            
            for ($i=1; $i <= $this->totalPaginas; $i++){ 
                if ($_GET[$this->pagina] == $i) {
                    $temp[$i] =  "<li class=\"num\"><b>".$_GET[$this->pagina]."</b></li> "; 
                } else {
                    //$temp[$i] =  "<li class=\"num\"><a href=\"?".$this->pagina."=".$i.$this->agregarGet()."\" >".$i."</a></li>";
                    $temp[$i] =  "<li class=\"num\"><a href=\"".$i.$this->agregarGet()."\" >".$i."</a></li>";
                }    
            }
            
              echo implode("  ", $temp);
            
            if(($_GET[$this->pagina] + 1)<=$this->totalPaginas) {
                //echo "<li class=\"num\"><a href=\"?".$this->pagina."=".($_GET[$this->pagina]+1).$this->agregarGet()."\" >".$this->tagSiguiente."</a></li>";
                echo "<li class=\"num\"><a href=\""./*$this->pagina*/($_GET[$this->pagina]+1).$this->agregarGet()."\" >".$this->tagSiguiente."</a></li>";
            }
            echo '</ul>';
        }
    }
    
    function agregarGet(){
        
        switch(func_num_args()){
            case 1: 
                foreach($this->variablesGet as $varGet)
                    $get.= "&$varGet=".$GLOBALS[$varGet];
                return $get;
                break;
            default:
            
                for($i = 0; $i < func_num_args(); $i++){
                    $this->variablesGet[] = func_get_arg($i);
                }
                break;
        }
    } 
    
    function mostrarContenido(){
        $this->inicio = ($_GET[$this->pagina]-1) * $this->numRegistros; 
        $nuevaConsulta = $this->query." LIMIT ".$this->inicio.",".$this->numRegistros;
        $this->conexion->ejecutarConsulta($nuevaConsulta);
    }
    
    
    function vectorDatos(){
        $this->inicio = ($_GET[$this->pagina]-1) * $this->numRegistros; 
        $nuevaConsulta = $this->query." LIMIT ".$this->inicio.",".$this->numRegistros;
        $this->conexion->ejecutarConsulta($nuevaConsulta);
        if($this->totalRegistros > 0){
            $j = 0;
            while($dt = $this->conexion->fetchAssoc()){
                $indices = array_keys($dt);
                //echo $indices[0];
                for($i=0; $i<=count($indices); $i++){
                    $this->v_datos[$j][$indices[$i]] = $dt[$indices[$i]];
                }
                $j++;
            }
            return $this->v_datos;
        }else{
            return false;
        }
        return false;
    }
}
?>    
   y aqui la clase conexion! 
 Código PHP:
    class conexion{
    private $conexionId;
    private $baseDatos;
    private $servidor;
    private $passwordBD;
    private $usuarioBD;
    private $consultaID;
    private $error;
    
    function conexion(){
        try{
            $this->baseDatos      = BD;
            $this->servidor        = SERVIDOR_BD;
            $this->usuarioBD     = USUARIO_BD;
            $this->passwordBD    = PASSWORD_BD;
            
        }catch(Exception $error){
            $this->error = $error->getMessage();
        }
    }
    
     function conectar(){
        try{
            $this->conexionId = @mysql_connect($this->servidor, $this->usuarioBD, $this->passwordBD);
 
            if (!$this->conexionId) {
                $this->error = "Error en la Conexion";
                return 0;
            }
 
            if (!@mysql_select_db($this->baseDatos, $this->conexionId)) {
                $this->error = "Imposible abrir ".$this->baseDatos ;
                return 0;
            }
        }catch(Exception $error){
            $this->error = $error->getMessage();
        }
    return $this->conexionId;
    }
    
    function ejecutarConsulta($consulta){
        try{
            if($this->conectar()){
                if(!empty($consulta)){
                    $this->consultaID = @mysql_query(($consulta), $this->conexionId);
                    $id =  mysql_insert_id();
                    $this->cerrarConexion();
                }
            }
        }catch(Exception $error){
        $this->error = $error->getMessage();
        }
    return $id;
    }
    
    function fetchArray(){
        try{
            $array = @mysql_fetch_array($this->consultaID);
        }catch(Exception $error){
            $this->error = $error->getMessage();
        }
        return($array);
    }
    
   function numRows(){
        try{
            $array = @mysql_num_rows($this->consultaID);
        }catch(Exception $error){
            $this->error = $error->getMessage();
        }
        return($array);
    }
    
    function fetchAssoc(){
        try{
            $array = @mysql_fetch_assoc($this->consultaID);
        }catch(Exception $error){
            $this->error = $error->getMessage();
        }
        return($array);
    }
    
    private function cerrarConexion(){
        try{
            if ($this->conexionId) {
                @mysql_close($this->conexionId);
            }
        }catch(Exception $error){
            $this->error = $error->getMessage();
        }
    }
} 
    
  y aqui su uso: 
 Código PHP:
    //Ejemplo de su uso:
 
 
require_once("Clase.conexion.php");
require_once("Clase.paginador.php");
$cnx = new conexion();
$q_noticias = "SELECT * FROM TABLA  ORDER BY fecha DESC";
 
$pg                 = new paginador($cnx);
$pg->pagina         = "p"; //variable GET de paginacion
$pg->numRegistros     = 5;  //Cantidad de registros
$pg->paginar($q_noticias);
$pg->mostrarContenido();
 
 
$pg->mostrarPaginacion(); //Esto p muestra la paginacion!