Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/01/2008, 14:39
Elisa85
 
Fecha de Ingreso: marzo-2007
Ubicación: España
Mensajes: 133
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Paginación PHP + MySQL; Pierdo la consulta.

Bueno... pues no me ha funcionado, no sé que debo hacer mal....

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 "conexion.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'];

echo 
$tipus;

$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' "; }    

echo 
$cons;
//Fi de la construccio de la consulta sense limits

//Inici de calculs de la paginació.

    
$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;
            }
        }
        
//        echo $cons;
        //////////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='#CCCCCC'>Seleccionar</a></th>";
        echo 
"<th bgcolor='#CCCCCC'>Código</a></th>";
        echo 
"<th bgcolor='#CCCCCC'>Títol</a></th>";
        echo 
"<th bgcolor='#CCCCCC'>Autors</a></th>";
        
        while(
$registre=mysql_fetch_array($result))
        {
?>
<!-- tabla de resultados -->
    <tr bgcolor="#CC6666" onMouseOver="this.style.backgroundColor='#FF9900';this.style.cursor='hand';" onMouseOut="this.style.backgroundColor='#CC6666'"o"];" onClick="javascript:muestra('<? echo "[".$registro["Registre"]."] ".$registro["Autors"]." - ".$registro["Títol"]; ?>');">
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><input name="sel" type="checkbox" value=""></b></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registre["Registre"]; ?></b></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registre["Autors"]; ?></b></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registre["Títol"]; ?></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'>siguiente</font></a>";    }
    
//////////fin de la paginacion
        
mysql_close($db);
?>
    </td></tr>
    </table>

</body>
</html>
he intentado hacer un "echo" de lo que tienen las variables pero nunca muestran nada, ni cuando vienen de formulario ni cuando lo cgen por la URl.
Además, no siempre se llenan todos los campos de la consulta, con lo que una URL de ejemplo, si busco solo por $tipus podria ser esto:
http://localhost/cons6.php?pagina=2?...ditorial=?any=

que puedo estar haciendo mal?