Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/01/2010, 08:00
SoutlinK
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: Problema con paginacion.. no me muestra las demas paginas

Vale, ya e encontrado el problema, que es el siguiente

Tu haces la paginacion con una consulta que ya tiene una clausula LIMIT con lo cual tu $total_registros siempre ba a tener 10 o menos pero nunca mas, por que asi se lo hemos pedido con el LIMIT, entonces la solucion es hacer un sql primero sin el LIMIT pero con las clausulas WHERE y obtener el valor de los registros

E echo una pequeña reforma de tu codigo para que estea un poco mas clarito y ya con algunas soluciones. SI no entiendes algo pregunta ;)

Código PHP:
<?php 
$Tbusq 
= $_POST["opCAMPO1"]; 
$accion = $_POST["txtEXPR1"]; 
$pagina = (isset($_GET['pagina'])) ? $_GET['pagina'] : 1; //Si esta definida $_GET['pagina'] cojemos su valor, si no hay nada la primera pagina es 1

//Aquí ya tienes otro problema por que la pagina se pasa por GET
//Y los paremetros de busqueda por POST y al cambiar de pagina estos no se mandan.
//Te recomiendo usar solo POST o GET, o en su defecto guardar los valores en cookies.

$sql = "SELECT num, titulo, tema FROM inegi"; 

switch(
$Tbusq)
{
    
//Si $Tbusq es igual a 1
    
case 1:
        
$sql .= " WHERE titulo LIKE '%$accion%'"; 
    break;
    
//Si $Tbusq es igual a 2
    
case 2:
         
$sql .= " WHERE tema LIKE '%$accion%'"; 
    break;
    case 
'':
    default:
        exit(
'Selecciona un tipo de busqueda');
        
//Como no tenemos busqueda no queremos saber nada mas
    
break;
} 
 
//Realizar una consulta en la BD: 
$resultados = mysql_query($sql); 
$total_registros = mysql_affected_rows($resultados); 
$total_paginas = ceil($total_registros / $registros);

if(
$total_registros && $total_registros != -1)
{ 
    
$registros = 10;  //Número de registros por pagina
    
$inicio = ($pagina - 1) * $registros; //Donde empezamos
    //Ahora si queremos un limite de consultas
    
$sql .= " LIMIT $inicio, $registros";
    while (
$row = mysql_fetch_array($resultados))
    { 
        
//Mientras tengamos resultados
        
echo "<p><strong>Num. </strong>". $row['num'] ." - <strong>Titulo: </strong> ". $row['titulo'] ."<strong> Tema: </strong>". $row['tema'] ."</p>";
         
//echo "<P>", "<strong>", "Num. ", "</strong>", $row["num"], " - ", "<strong>", "Titulo: ", "</strong>", $row["titulo"], "<strong>", " Tema: ", "</strong>", $row["tema"], "</P>"; 
    
}
    
//Ahora mostramos la paginacion
    
echo "<center>";          
    if(
$pagina > 1) 
    {
        echo 
"<a href='consultas.php?pagina=".($pagina--)."'>< Anterior</a> "; 
  } 
    
    for (
$i = 1; $i <= $total_paginas; $i++)
    {
        if (
$i == $pagina)
        {
            
//Si esta es la pagina en la que estamos
            
echo "<b>".$i."</b> "; 
        }
        else
        {
            echo 
"<a href=\"consultas.php?pagina=$i\">$i</a> "; 
        }
    }
    
    if (
$pagina < $total_paginas)
    {
        
//Si tenemos mas páginas que la actual
        
echo " <a href=\"consultas.php?pagina=".($pagina++)."\">Siguiente ></a>";
    }
    echo 
'</center>';
}
else
{ 
    exit(
"<font color='darkgray'>(sin resultados)</font>");
    
//No queremos nada mas
} 
?>