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

Podemos enfocarlo de esta manera. Com oya te puse en el codigo tendrás problemas con esto, asique vamos a solucionarlo.

El metodo mas rapido y sencillo (para mi son las sessiones) aunque puedes usar cookies, a tu libre gusto.

Con las sesiones quedaría asi.

Código PHP:
<table width="100%" border="0"> 
  <tr> 
    <td width="99%" align="center"><span class="Estilo1">Resultado de la busqueda:</span></td> 
    <td width="1%">&nbsp;</td> 
  </tr> 
  <tr> 
    <td> 

<?php  
session_name
("MyWebSite"); //Puedes poner el nombre que quieras
session_start(); //Iniciamos la sesion

if (isset($_POST['opCAMPO1'])) //Si esta definida la metemos en la session
{
    
$_SESSION['opCAMPO1'] = $_POST['opCAMPO1'];
}

if (isset(
$_POST['txtEXPR1']))
{
    
$_SESSION['txtEXPR1'] = $_POST["txtEXPR1"]; //Si esta definida la metemos en la session    
}
//Ahora asignamos a las variables el valor de la sesion

$Tbusq $_SESSION['opCAMPO1'];
$accion $_SESSION['txtEXPR1']; 

$registros 10;  //Número de registros por pagina  
$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 
0:
    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();  
$total_paginas ceil($total_registros $registros); 

if(
$total_registros && $total_registros != -1
{  
    
$inicio = ($pagina 1) * $registros//Donde empezamos 
    //Ahora si queremos un limite de consultas 
    
$sql .= " LIMIT $inicio, $registros"
    
$resultados mysql_query($sql);  
    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 
}  
?>  
</td> 
<td> 

</td> 

  </tr> 
   
</table>
Como ves lo que hacemos es comprobar si se han pasado valores por $_POST, si es así actualizamos la sesion. Si no se a pasado nada, es que ya debe estar guardado en la sesion.

Ya me cuentas