Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/02/2008, 12:06
Elisa85
 
Fecha de Ingreso: marzo-2007
Ubicación: España
Mensajes: 133
Antigüedad: 17 años, 1 mes
Puntos: 0
Función paginacion.

Me gustaría hacer una función generica en php para paginar ya que tengo que paginar en varios casos y repetir el codigo me parece bastante sucio y dificil de modificar... Entonces me gustaria tener una funcion en un fichero aparte, y poder llamarla desde donde se necesite....

El problema es que no sé que partes se pueden apartar. y cuales no....
El codigo para paginar libros es el siguiente...
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?
include "includes/connexio.php";
$dbconectarse();

$cerca=$_REQUEST['cerca']; $criteri=$_REQUEST['criteri']; 
$iono=$_REQUEST['iono']; 
$cerca2=$_REQUEST['cerca2']; $criteri2=$_REQUEST['criteri2'];
$tipus=$_REQUEST['tipus']; $llengua=$_REQUEST['llengua']; $nivell=$_REQUEST['nivell'];
$editorial=$_REQUEST['editorial']; $any=$_REQUEST['any'];


//Construcción de la consulta.
if ($cerca=="" && $cerca2=="" && $tipus=="0" && $llengua=="0" && $nivell=="0" && $editorial=="" && $any==""){
    echo 
"no hay criterios de busqueda";
}else{

    
$cons="SELECT * FROM catàleg WHERE Registre > 0 ";
    if (
$cerca!="" && $criteri!=""){
        if (
$criteri == "tit"){ $cons $cons."AND Títol LIKE '%$cerca%' "//'%".$nom_proy."%
        
}else if ($criteri == "aut"){ $cons $cons."AND Autors LIKE '%$cerca%' ";
        }else if (
$criteri == "par"){ $cons $cons."AND MATCH (Títol, Autors, Descriptors, Resum, `camp lliure`) AGAINST ('$cerca') ";
        }else if (
$criteri == "mat"){ $cons $cons."AND Descriptors LIKE '%$cerca%' ";
        }else if (
$criteri == "ISBN"){ $cons $cons."AND ISBN = '$cerca' "; }
    }

    if (
$iono=="i"){ $cons $cons."AND "; }
    if (
$iono=="o"){ $cons $cons."OR "; } 
    if (
$iono=="no"){
        if (
$criteri2 == "tit"){ $cons $cons."AND Títol NOT LIKE '%$cerca2%' "//'%".$nom_proy."%
        
}else if ($criteri2 == "aut"){ $cons $cons."AND Autors NOT LIKE '%$cerca2%' ";
        }else if (
$criteri2 == "par"){ $cons $cons."AND NOT MATCH (Títol, Autors, Descriptors, Resum, `camp lliure`) AGAINST ('$cerca2') ";
        }else if (
$criteri2 == "mat"){ $cons $cons."AND Descriptors NOT LIKE '%$cerca2%' ";
        }else if (
$criteri == "ISBN"){ $cons $cons."AND ISBN != '$cerca2' "; }
    }

    if (
$cerca2!="" && $criteri2!="" && $iono!="no"){ 
        if (
$criteri2 == "tit"){ $cons $cons."Títol LIKE '%$cerca2%' "//'%".$nom_proy."%
        
}else if ($criteri2 == "aut"){ $cons $cons."Autors LIKE '%$cerca2%' ";
        }else if (
$criteri2 == "par"){ $cons $cons."MATCH (Títol, Autors, Descriptors, Resum, `camp lliure`) AGAINST ('$cerca2') ";
        }else if (
$criteri2 == "mat"){ $cons $cons."Descriptors LIKE '%$cerca2%' ";
        }else if (
$criteri == "ISBN"){ $cons $cons."ISBN = '$cerca2' ";
    }
}

if (
$tipus != "" && $tipus !="0"){ $cons =$cons."AND Material = '$tipus' "; }
if (
$llengua != "" && $llengua !="0"){ $cons=$cons."AND Llengua = '$llengua' "; }
if (
$nivell != "" && $nivell !="0"){ $cons=$cons."AND Nivell = '$nivell' "; }
if (
$editorial != ""){ $cons=$cons."AND Editor = '$editorial' "; }
if (
$any != ""){ $cons=$cons."AND Data = '$any' "; }    

//Fin de la construccion de la consulta sin los limites.

//Inicio de calculos de la paginación.

    
$res=mysql_query($cons,$db);
    
$numeroRegistros=mysql_num_rows($res);   //Comptar el número de resultats
    
if ($numeroRegistros <=0){                 //Si no hi han resultats
        
echo "<div align='center'>";
        echo 
"<font face='verdana' size='-2'>No s'han trobat resultats</font>";
        echo 
"</div>";
    }else{
        
$tamPag=10;  //número de resultats per pàgina
        
$pagina=$_GET['pagina'];
        
        
//pàgina actual si no esta definida y limits
        
if(!isset($pagina))
        {
               
$pagina=1;
               
$inicio=1;
               
$final=$tamPag;
        }        
        
        
$limitInf=($pagina-1)*$tamPag;
        
        
//calculo del numero de paginas
        
$numPags=ceil($numeroRegistros/$tamPag);
        if(!isset(
$pagina))
        {
               
$pagina=1;
               
$inicio=1;
               
$final=$tamPag;
        }else{
            
$seccionActual=intval(($pagina-1)/$tamPag);
            
$inicio=($seccionActual*$tamPag)+1;

            if(
$pagina<$numPags)
            {
               
$final=$inicio+$tamPag-1;
            }else{
                
$final=$numPags;
            }
                
            if (
$final>$numPags){
                
$final=$numPags;
            }
        }
        
        
//creacion de la consulta con limites
        
$consLIM $cons."LIMIT ".$limitInf.",".$tamPag;
        
//echo $consLIM;
        
$result=mysql_query($consLIM,$db);
        
        echo 
"<div align='center'>";
        echo 
"<font face='verdana' size='-2'>Trobats ".$numeroRegistros." documents<br>";
        echo 
"</font></div>";
        
        echo 
"<table align='center' width='80%' border='0' cellspacing='1' cellpadding='0'>";
        echo 
"<tr><td colspan='4'><hr noshade></td></tr>";
        echo 
"<th bgcolor='#87CEFA'>Seleccionar</a></th>";
        echo 
"<th bgcolor='#87CEFA'>Codi</a></th>";
        echo 
"<th bgcolor='#87CEFA'>Títol</a></th>";
        echo 
"<th bgcolor='#87CEFA'>Autors</a></th>";
        
        while(
$registre=mysql_fetch_array($result))
        {
?>
<!-- tabla de resultados -->
    <tr bgcolor="#E0FFFF" onMouseOver="this.style.backgroundColor='#B0E0E6';" onMouseOut="this.style.backgroundColor='#E0FFFF';">
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><b><input name="sel" type="checkbox" value=""></b></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><b><? echo $registre["Registre"]; ?></b></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><b><? echo $registre["Títol"]; ?></b></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><b><? echo $registre["Autors"]; ?></b></font></td>
  </tr>
<!-- fin tabla resultados -->
<?
        
}//fin while

            
echo "</table>";
    }
//fin if

            //////////a partir de aqui viene la paginacion
?>
    <br>
    <table border="0" cellspacing="0" cellpadding="0" align="center">
    <tr><td align="center" valign="top">
<?

    
if($pagina>1)
    {
    
        echo 
"<a class='p' href='".$_SERVER['PHP_SELF']."?pagina=".($pagina-1)."&cerca=".$cerca."&criteri=".$criteri."&iono=".$iono."&cerca2=".$cerca2."&criteri2=".$criteri2."&tipus=".$tipus."&llengua=".$llengua."&nivell=".$nivell."&editorial=".$editorial."&any=".$any."'>";
        echo 
"<font face='verdana' size='-2'>Anterior</font>";
        echo 
"</a>&nbsp;";
    }

    for(
$i=$inicio;$i<=$final;$i++)
    {
        if(
$i==$pagina)
        {
            echo 
"<font face='verdana' size='-2'><b>".$i."</b>&nbsp;</font>";
        }else{
            echo 
"<a class='p' href='".$_SERVER['PHP_SELF']."?pagina=".$i."&cerca=".$cerca."&criteri=".$criteri."&iono=".$iono."&cerca2=".$cerca2."&criteri2=".$criteri2."&tipus=".$tipus."&llengua=".$llengua."&nivell=".$nivell."&editorial=".$editorial."&any=".$any."'>";
            echo 
"<font face='verdana' size='-2'>".$i."</font></a>&nbsp;";
        }
    }
    if(
$pagina<$numPags)
    {
        echo 
"&nbsp;<a class='p' href='".$_SERVER['PHP_SELF']."?pagina=".($pagina+1)."&cerca=".$cerca."&criteri=".$criteri."&iono=".$iono."&cerca2=".$cerca2."&criteri2=".$criteri2."&tipus=".$tipus."&llengua=".$llengua."&nivell=".$nivell."&editorial=".$editorial."&any=".$any."'>";
        echo 
"<font face='verdana' size='-2'>Següent</font></a>";    }
    
//////////fin de la paginacion
        
mysql_close($db);
        
?>
    </td></tr>
    </table>
    <? ?>
<div align="center"><font face="verdana" size="-2"><a class="p" href="/eoitarragona/cataleg.php">::Tornar a la consulta del catàleg::</a></font></div>
</body>
</html>
No siempre voy a listar las mismas cosas... y cuando se seleccione una fila tampoco haré lo mismo...

Espero me puedan ayudar.