Uso PhpNuke, pero me hice un modulo propio de tracks para GPS. La cuestiosn es que hasta hace bien poco todo funcionaba OK, hasta que he actualizado el PhpNuke y el paginador ha de jado de fincionas.
 
El paginado es practicamente igual a este:
 
 http://www.miwebera.com/desarrollophp/article36.html
 
Algo mas complejo ya que uso mas variable, pero igual en funcionamiento.
La cuestion es que no me manda la ultima variable $pg, si me manda otras 4 que tengo delante, pero esta, me manda esta cadena ",, , l, 1, , /php/php.exe?name=Tracks&file=Buscar&palabra=l&tipobusc  ar=1&pg=1 " en vez del numero de la PG.
 
Este es mi codigo:
 
function paginacion($pages, $palabra, $tipobuscar, $orden, $pg){
echo "<center>Nº de paginas <font face=\"Arial\" size=\"2\" color=\"#000080\"><b>$pages</b></font>: ";
 
 
if ($tipobuscar==6){
if ($pg != 0) {
$url = $pg - 1;
echo "<a href='modules.php?name=Tracks&file=Buscar&tipo  buscar=$tipobuscar&orden=$orden&pg=".$url."'>&laqu  o; Anterior</a> ";
} else {
echo " ";
}
 
 
for ($i = 0; $i < $pages; $i++) {
if ($i == $pg) {
$pgn=$pg+1;
echo "<b> $pgn </b>";
} else {
$pgn++;
echo "<a href=modules.php?name=Tracks&file=Buscar&tipob  uscar=$tipobuscar&orden=$orden&pg=".$i.">$pgn</a> ";
}
}
if ($pg < $pages-1) {
$url = $pg + 1;
echo "<a href='modules.php?name=Tracks&file=Buscar&tipo  buscar=$tipobuscar&orden=$orden&pg=".$url."'>Sigui  ente »</a>";
} else {
echo " ";
}
echo " <hr noshade color=\"#800000\" size=\"1\">";
 
}else{
if ($pg != 0) {
$url = $pg - 1;
 
echo "<a href='modules.php?name=Tracks&file=Buscar&pala  bra=$palabra&tipobuscar=$tipobuscar&pg=".$url."'>&  laquo; Anterior</a> ";
} else {
echo " ";
}
 
for ($i = 0; $i < $pages; $i++) {
if ($i == $pg) {
$pgn=$pg+1;
echo "<b> $pgn </b>";
} else {
$pgn++;
echo "<a href=modules.php?name=Tracks&file=Buscar&palab  ra=$palabra&tipobuscar=$tipobuscar&pg=".$i.">$pgn</a> ";
}
}
if ($pg < $pages-1) {
$url = $pg + 1;
echo "<a href='modules.php?name=Tracks&file=Buscar&pala  bra=$palabra&tipobuscar=$tipobuscar&pg=".$url."'>S  iguiente »</a>";
} else {
echo " ";
}
echo " <hr noshade color=\"#800000\" size=\"1\">";
}
}
 
Y parte del  buscador:
 
function Buscar($palabra, $provincias1, $tipobuscar, $zonas, $cumbres, $autores, $orden, $desniveles, $distancias, $pg){
global $prefix, $db, $cookie, $user, $module_name, $user_prefix, $dbi, $viewbaseurl, $upbaseurl;
if (!isset($pg))$pg = 0; // $pg es la pagina actual
$cantidad=15; // cantidad de resultados por página
$inicial = $pg * $cantidad;
//echo "$inicial,$cantidad, $pages, $palabra, $tipobuscar, $orden, $pg";//para ver los valores solo pruebas
 
if (!isset($tipobuscar))$tipobuscar=1;
	 if ($tipobuscar==1){
    if ($palabra=="") { // Check si se ha metido palabra alguna
	include("headertrack1.php");
	echo "<br>";
	OpenTable();
	echo "<center><b>No has seleccionado ninguna opción de busqueda, ni has tecleado nada en el formulario.</b><br><br>"
	    .""._GOBACK."";
	CloseTable();
	include("footer.php");
	}
	include("headertrack1.php");//si se ha metido busca en la base de datos
 
	$sql = "SELECT * FROM tracklistsok where (";
	$terms = explode(" ", $palabra); // $palabra seria el input de texto de  la busqueda
        for(@reset($terms); list(, $term) = @each($terms); $sql .= 'or ') {
            $sql .= "upfilename LIKE '%$term%' ";
        }
 
		for(@reset($terms); list(, $term) = @each($terms); $sql .= 'or ') {
            $sql .= "httpupfile LIKE '%$term%' ";
        }
 
		for(@reset($terms); list(, $term) = @each($terms); $sql .= 'or ') {
            $sql .= "descr1 LIKE '%$term%' ";
        }
 
		for(@reset($terms); list(, $term) = @each($terms); $sql .= 'or ') {
            $sql .= "cimas LIKE '%$term%' ";
        }
 
		for(@reset($terms); list(, $term) = @each($terms); $sql .= 'or ') {
            $sql .= "zona LIKE '%$term%' ";
        }
 
		for(@reset($terms); list(, $term) = @each($terms); $sql .= 'or ') {
            $sql .= "provincia LIKE '%$term%' ";
        }
 
		for(@reset($terms); list(, $term) = @each($terms); $sql .= 'or ') {
            $sql .= "descr2 LIKE '%$term%' ";
        }
 
       $sql = substr($sql,0,-4); //quita el ultimo OR cuando hace todo el recorrido
	   $sql .=")"; //Lo añado para que cierre los parentesis despues de quitar el ultimo OR
	   $sql .=  " GROUP BY id ORDER BY id ASC LIMIT $inicial,$cantidad" ;// donde id es algun campo autonumerico o que no se repita.
        //echo "Resultador:<br>$sql"; //para que veas si sirve..  :si: sí sí.. aquí deverias continuar.. conectas y demás..
		$sqlcuenta = "SELECT * FROM tracklistsok where (";
	$terms = explode(" ", $palabra); // $palabra seria el input de texto de  la busqueda
        for(@reset($terms); list(, $term) = @each($terms); $sqlcuenta .= 'or ') {
            $sqlcuenta .= "upfilename LIKE '%$term%' ";
        }
 
		for(@reset($terms); list(, $term) = @each($terms); $sqlcuenta .= 'or ') {
            $sqlcuenta .= "httpupfile LIKE '%$term%' ";
        }
 
		for(@reset($terms); list(, $term) = @each($terms); $sqlcuenta .= 'or ') {
            $sqlcuenta .= "descr1 LIKE '%$term%' ";
        }
 
		for(@reset($terms); list(, $term) = @each($terms); $sqlcuenta .= 'or ') {
            $sqlcuenta .= "cimas LIKE '%$term%' ";
        }
 
		for(@reset($terms); list(, $term) = @each($terms); $sqlcuenta .= 'or ') {
            $sqlcuenta .= "zona LIKE '%$term%' ";
        }
 
		for(@reset($terms); list(, $term) = @each($terms); $sqlcuenta .= 'or ') {
            $sqlcuenta .= "provincia LIKE '%$term%' ";
        }
 
		for(@reset($terms); list(, $term) = @each($terms); $sqlcuenta .= 'or ') {
            $sqlcuenta .= "descr2 LIKE '%$term%' ";
        }
 
       $sqlcuenta = substr($sqlcuenta,0,-4); //quita el ultimo OR cuando hace todo el recorrido
	   $sqlcuenta .=")"; //Lo añado para que cierre los parentesis despues de quitar el ultimo OR
	   $sqlcuenta .=  " GROUP BY id ORDER BY id ASC" ;// donde id es algun campo autonumerico o que no se repita.
		$resultcuenta = $db->sql_query($sqlcuenta);
		$total_records = $db->sql_numrows($resultcuenta);
		$pages = ceil($total_records / $cantidad);
		$result = $db->sql_query($sql);
		tablacabeza2($total_records, $palabra);
  		while ($row = $db->sql_fetchrow($result)) {
		$idb = $row[id];
		$httpupfileb = $row[httpupfile];
		$tracknameb = eregi_replace( "/", "   ",$row[trackname]);
		$descr1b = eregi_replace( "/", "   ",$row[descr1]);
		$cimasb = eregi_replace( "/", "   ",$row[cimas]);
		$zonab = eregi_replace( "/", "   ",$row[zona]);
		$provinciab = eregi_replace( "/", "   ",$row[provincia]);
		//$tracknameb = eregi_replace( "$palabra", "<b><font color=\"#800000\">$palabra</font></b>",$tracknameb);
		$descr1b = eregi_replace( "$palabra", "<b><font color=\"#800000\">$palabra</font></b>",$descr1b);
		//$cimasb = eregi_replace( "$palabra", "<b><font color=\"#800000\">$palabra</font></b>",$cimasb);
		//$zonab = eregi_replace( "$palabra", "<b><font color=\"#800000\">$palabra</font></b>",$zonab);
		//$provinciab = eregi_replace( "$palabra", "<b><font color=\"#800000\">$palabra</font></b>",$provinciab);
		$cimasb = $palabra;
		$zonab = $palabra;
		$provinciab = $palabra;
		$date2b = $row[date2];
		$upfilesizeb = $row[upfilesize];
		$idautor1b = $row[idautor1];
		$idautor2b = $row[idautor2];
		$hitsb = $row[hits];
		$trackb = $row[track];
		$date1b = $row[date1];
		$tiempob = $row[tiempo];
		$tiempo2b = $row[tiempo2];
		$kmb = $row[km];
		$tipob = $row[tipo];
		$desnib = $row[desni];
		$cimasb = $row[cimas];
		$zonab = $row[zona];
		$provinciab = $row[provincia];
		if($bgcolor == '#E8E8E3')$bgcolor = '#F5F5F5'; // para alternar colores
		else $bgcolor = '#E8E8E3';
			if ($idautor2b != 0){
			$sqla = "SELECT nombre, email FROM trackautor where idautor=$idautor2b ";
	    $resulta = $db->sql_query($sqla);
    	list ($nombre, $email) = $db->sql_fetchrow($resulta);
		$autor = $nombre;
		$email = $email;
		 $anonimo="1";
		}else{
		$sqlb = "SELECT username, user_email FROM nuke_users where user_id=$idautor1b ";
	    $resultb = $db->sql_query($sqlb);
    	list ($username, $user_email) = $db->sql_fetchrow($resultb) ;
		$autor = $username;
		$email = $user_mail;
 
		$anonimo="0";
		}
		if ($anonimo == 0){$nid=$idautor1b;}
		if ($anonimo == 1){$nid=1;}
		tablapeque($idb, $httpupfileb, $tracknameb, $descr1b, $cimasb, $zonab, $provinciab,  $date2b, $date1b, $cimasb, $zonab, $provinciab, $tipob, $desnib, $kmb, $tiempob, $tiempo2b, $upfilesizeb, $autor, $email, $anonimo, $nid, $bgcolor, $trackb, $hitsb);
}
		// Creando los enlaces de paginación
		echo "<br> <center>*En caso de algun error, no se descarga el Track, no se ve bien el formulario, etc, enviad un e-mail: <a href=\"mailto:[email protected]?subject=Error en formulario simple\">Enviar email de ERROR</a></center><br>";
 
paginacion($pages,$palabra, $tipobuscar, $orden, $pg);
menu();
		include("footer.php");
	}//Fin opcion 1 - Manual
 
 
	elseif ($tipobuscar==2){ // Busqueda por provincias
 
	if (($provincias1=="" || $provincias1=="NULL") && $palabra==""){ //se el if de $palabra para evitar fallo de paginacion ya que envia solo $palabra
	// Check si se ha metido palabra alguna
	include("headertrack1.php");
	echo "<br>";
	OpenTable();
	echo "<center><b>No has seleccionado ninguna opción de busqueda, ni has tecleado nada en el formulario.</b><br><br>"
	    .""._GOBACK."";
	CloseTable();
	include("footer.php");
 
	}
 
Gracias 
   
 
 
 
