Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/01/2010, 08:00
SoutlinK
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 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

?>