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