Foros del Web » Programando para Internet » PHP »

Problema con paginacion.. no me muestra las demas paginas

Estas en el tema de Problema con paginacion.. no me muestra las demas paginas en el foro de PHP en Foros del Web. Hola amigos forosdelweb ando empezando con el PHP he tratado de hacer una paginacion pero no me muestra los links de las demas paginas si ...
  #1 (permalink)  
Antiguo 20/01/2010, 18:08
 
Fecha de Ingreso: enero-2010
Mensajes: 31
Antigüedad: 14 años, 3 meses
Puntos: 0
Pregunta Problema con paginacion.. no me muestra las demas paginas

Hola amigos forosdelweb ando empezando con el PHP he tratado de hacer una paginacion pero no me muestra los links de las demas paginas si en el select le pongo el LIMIT si se lo quito me muestra todos los registros y las paginas pero si le doy por ejemplo en "siguiente" me muestra mi pagina otra vez sin consultas :S no se si tenga algo malo dejo el codigo para ver si me pueden ayudar.. muchas gracias desde ya...

Código PHP:
<?php
$Tbusq
=$_POST["opCAMPO1"];
$accion$_POST["txtEXPR1"];

$registros 10;
if (!
$pagina) { 
    
$inicio 0
    
$pagina 1

else { 
    
$inicio = ($pagina 1) * $registros


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

if(
$Tbusq == 0){
    
//$sql = "SELECT num, titulo, tema FROM inegi";
    
echo "Selecciona un tipo de busqueda";
}
//seleccion segun tipo de busqueda
if($Tbusq !=0){
if(
$Tbusq == ){
    
$sql .= " WHERE titulo LIKE '%$accion%' LIMIT $inicio, $registros ";
}


if(
$Tbusq == 2){
    
$sql .= " WHERE tema LIKE '%$accion%' LIMIT $inicio, $registros ";
    
//echo $accion;
}

//Realizar una consulta en la BD:
$resultados mysql_query($sql);
$total_registros=mysql_num_rows($resultados);
$total_paginas ceil($total_registros $registros);                       

    if(
$total_registros) {
//Recorrer el resultado de la consulta:
while ($row mysql_fetch_array($resultados)){
 echo 
"<P>""<strong>""Num. ""</strong>"$row["num"], " - ""<strong>""Titulo: ""</strong>"$row["titulo"], "<strong>"" Tema: ""</strong>"$row["tema"], "</P>";
}
} else {
        echo 
"<font color='darkgray'>(sin resultados)</font>";
    }
    
    
//mysql_free_result($resultados);        
}//no  borrar ste            
    
    
if($total_registros) {
        
        echo 
"<center>";
        
        if((
$pagina 1) > 0) {
            echo 
"<a href='consultas.php?pagina=".($pagina-1)."'>< Anterior</a> ";
        }
        
        for (
$i=1$i<=$total_paginas$i++){ 
            if (
$pagina == $i
                echo 
"<b>".$pagina."</b> "
            else
                echo 
"<a href='consultas.php?pagina=$i'>$i</a> "
        }
      
        if((
$pagina 1)<=$total_paginas) {
            echo 
" <a href='consultas.php?pagina=".($pagina+1)."'>Siguiente ></a>";
        }
        
        echo 
"</center>";
        
    }

?>
el $Tbusq=$_POST["opCAMPO1"]; viene de un campo combobox de otra pagina dejo esto como referencia. Gracias
  #2 (permalink)  
Antiguo 20/01/2010, 18:19
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: Problema con paginacion.. no me muestra las demas paginas

Hola.

Bueno viendo el codigo primero me sugiere lo siguiente:

NO se de donde recibes $pagina , supongo que tendras por otro lado $pagina = $_GET['pagina'] y no lo has puesto por aquí.

Y para una paginacion necesitas lo siguiente:

$pagina
$registros_por_pagina
$total_registros
$total_paginas
Con estas tres variables armamos el tinglado.

Cuantas paginas son
$total_paginas = $total_registros / $registros_por_pagina;
Que pasa si no da exacto, redondeamos hacia arriba con la funcion ceil (como tu bien has echo)

Ahora que tenemos el numero de paginas

for ($i = 1; $i <= $total_paginas; $i++)
{
echo $i; // número de pagina
}

$i = 1 por que las paginas empiezan el en 1
$i <= $total_paginas // se ejecutara el loop mientras se cumpla esta condicion y la ultima pagina tambien la queremos mostrar
$i++ sumamos uno

En el LIMIT del SQL

LIMIT $valor_inicial, $registros_por_pagina

Como calculamos el valor inicial
if (empty($pagina) || !$pagina) { $pagina = 1; }
//La pagina 1 siempre es la primera pagina

$valor_inicial = ($pagina - 1) * $registros_por_pagina

Y ya tienes todo lo necesario.
  #3 (permalink)  
Antiguo 21/01/2010, 03:01
 
Fecha de Ingreso: enero-2010
Mensajes: 31
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con paginacion.. no me muestra las demas paginas

Gracias SoutlinK por tu pronta respuesta... voy a checar el codigo que me has pasado a ver si puedo arreglar el que tengo de todas maneras seguire buscando x google a ver que puedo encontrar... si tengo algun problema lo pondre a ver si me pueden ayudar ... gracias por todo y un saludo al foro que sta de lujo eh aprendido bastante de aqui

EDITO.-

Tenias Razon olvide poner el $pagina=$_GET["pagina"]; funciona cuando le doy buscar "libre" me pone todos los registros y me pone las paginas pero no sirven de nada por que ya stan los 745 registros si le doy buscar "por tema" me saca los 10 pero no puedo ver los proximos 10 :S por que sera?

tendre puesto mal mis funciones IF?? del combobox?? tendra algo que ver eso??

Última edición por m4sterz3r0; 21/01/2010 a las 03:31
  #4 (permalink)  
Antiguo 21/01/2010, 08:00
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 9 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

?>
  #5 (permalink)  
Antiguo 21/01/2010, 08:02
 
Fecha de Ingreso: enero-2010
Mensajes: 31
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con paginacion.. no me muestra las demas paginas

Voy a probar el nuevo codigo que me has pasado para ver que tal funciona GRACIAS x tu ayuda

He probado ya el codigo... tuve unos problemas te los explico
Código PHP:
$total_registros mysql_affected_rows($resultados); 
Me marco error en la funcion mysql_affecterd_rows no super por que y lo cambie por mysql_num_rows y ya trabajo bien pero no me pone los 10
registros como debe de ser me manda todos como si no estuviera el LIMIT
Código PHP:
$total_paginas ceil($total_registros $registros); 
Ahi me dice que no puedo dividir entre 0 :S creo que registros aun no esta declarado o tiene 0 pero no me deja me dice ke no se puede dividir
Código PHP:
if($total_registros && $total_registros != -1
Esta linea no me quedo clara =S podrias explicarmela

Gracias de antemano

Última edición por m4sterz3r0; 21/01/2010 a las 14:18 Razón: Para no postear de nuevo
  #6 (permalink)  
Antiguo 21/01/2010, 15:19
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: Problema con paginacion.. no me muestra las demas paginas

Hola de nuevo.

Bueno te comento:

Código PHP:
$total_registros mysql_affected_rows($resultados); 
Esta linea esta mal (me cole lo siento) ya que lo que espera affected_rows, es el identificador no el resultado del query, asique tiene que quedar asi

Código PHP:
$total_registros mysql_affected_rows(); 
El siguiente error

Código PHP:
$total_paginas ceil($total_registros $registros); 
Es debido a que $total_registros era igual a 0 (debido al error anterior) y 0 dividido entre algo es infinito, o lo que es lo mismo, error.

Código PHP:
if($total_registros && $total_registros != -1

Esta linea lo que dice es lo siguiente
si $total_registros existe y contiene valor, y (&&) su valor es distinto != de -1 (Ya que mysql_affected_rows devuelve -1 si se produce un error, procedemos.

Respecto al error del limit, tambien e encontrado el error (vuelve a ser culpa mia lo siento)

Si te dijas, le decimos que a la variable sql, le añada una cadena a lo que ya tiene
Código PHP:
$sql .= " LIMIT $inicio, $registros"
Pero hemos cometido un gran error. NO LA HEMOS EJECUTADO!!

Es decir, que es como si no hicieras nada, entonces para solucionar esto hacemos lo siguiente.

Debajo de
Código PHP:
$sql .= " LIMIT $inicio, $registros"
Añadimos el siguiente codigo
Código PHP:
$resultados mysql_query($sql); 
Ya ya esta!

Bueno ya me cuentas. Un saludo
  #7 (permalink)  
Antiguo 21/01/2010, 17:08
 
Fecha de Ingreso: enero-2010
Mensajes: 31
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con paginacion.. no me muestra las demas paginas

perdona la molestia de nuevo practicamente ya ntendi todo el codigo pero me sigue marcando el erro del 0... matematicamente hablando 0/algo = 0 algo/0=infinito y por lo que veo estamos haciendo $total_registros/$registros que seria algo/0 puesto que $registros no tiene nada o creo que 0 ya hasta despues en el if le damos valor de 3 imagino que esto sera el problema ya que ahora me muestra los 10 registros del sql pero no me pinta las paginas <<anterior 1|2 siguiente>> por el error del 0 o me equivoco??

Código PHP:
if($total_registros && $total_registros !=-1
me dices que es para saber si total_registros existe y tiene valor no?? entons no quedaria asi??
Código PHP:
if(isset($total_registros) && $total_registros !=-1){ 
Asi preguntaria si existe con valor no??
Gracias por la paciencia y disculpa es que apenas ando aprendiendo y esta es la primera vez que posteo una duda no me gusta molestar :P
  #8 (permalink)  
Antiguo 22/01/2010, 08:21
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: Problema con paginacion.. no me muestra las demas paginas

Lo de molestar olvidate, para eso estamos por aquí.

Podrias volver a poner todo el codigo completo actual?

mas que nada para ver como va la cosa, a ver si nos fuimos a equivocar en algo

Lo del error del 0 tienes razon, lo que indica es que el error es que se divide entre 0, pero sabes que? ya e vuelto a encontrar el error.

Volvemos al codigo, especialmente estas lineas

Código PHP:
$total_paginas ceil($total_registros $registros);

if(
$total_registros && $total_registros != -1)

    
$registros 10;  //Número de registros por pagina 
Cae de cabeza, pero al hacerlo rapido es lo que tiene

Cuanto vale $registros antes de

Código PHP:
$total_paginas ceil($total_registros $registros); 
??

Nada, por que no la hemos ni definido (si hace sun isset($registros) en esa misma linea te devolverá false.

Para corregirlo hay que mover la linea
Código PHP:
$registros 10;  //Número de registros por pagina 
a antes de la linea

Código PHP:
$total_paginas ceil($total_registros $registros); 
Entonces podriamos hacerlo así.

Al inicio de todo

Código 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 
Añadimos lo siguiente

Código PHP:
$registros 10;  //Número de registros por pagina 
De tal forma que queda

Código 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
$registros 10;  //Número de registros por pagina 
Luego buscamos
Código PHP:
$registros 10;  //Número de registros por pagina 
Debajo de
Código PHP:
if($total_registros && $total_registros != -1)

Y lo borramos, y ya esta!

Respecto a tu pregunta, el isset es para saber si esta definida, es decir, si haces $registros = '';

Con un isset esto te devolverá true, pero si haces $registros te devolverá false

No se si me e explicado bien, si no aquí estoy
  #9 (permalink)  
Antiguo 22/01/2010, 11:00
 
Fecha de Ingreso: enero-2010
Mensajes: 31
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con paginacion.. no me muestra las demas paginas

Gracias por tu ayuda el error del 0 esta solucionado y como decias no habiamos dado valor a $registros pero bueno error de logica jeje. Ya me hace bien la busqueda me pinta mis 10 registros con las respectivas paginas y todo...pero el error ahora es que al darle en "siguiente" me vuelve a poner la busqueda como si no la hubiera hecho me recarga el frame (por que cabe aclarar que tengo un catalogo.html con iframe donde muestro consultas.php) dicho esto continuo.. me recarga el frame y me sale como si no hubier busqueda no se si el problema es el iframe o el hecho de usar 2 metodos GET y POST como bien me lo mencionaste anteriormente si es asi me podrias ayudar a solucionarlo?? te dejo los codigos de los 2 archivos
catalogo.html
Código HTML:
<FORM ACTION="consultas.php" METHOD="post" name="Cargarconsulta" target="busqueda" id="Cargarconsulta">
            <table width="96%" height="163" border="0" align="center" cellpadding="0" cellspacing="0" class="info">
<tr><td><table height="575" border="0">
<tr>
                                      <td>
                                      
                              <span class="Estilo3">Busqueda: </span>
                              <input type="text" name="txtEXPR1" size="50" value=""> &nbsp;</td>
                              <td><input type="submit" value="Iniciar b&uacute;squeda" class="BotonSubmit"> </td>
                            </tr>
                                    <tr>
                                      <td align="right"><div align="center"><span class="Estilo5">Buscar </span>                                          
                                          <select name="opCAMPO1"  size="1">
                                        <option value="0"> --- </option>
                                        <option value="1">Por T&iacute;tulo</option>
                                        <option value="2">Por Tema</option>
                                          </select>
&nbsp;</div>
<div align="center"><span class="Estilo5">Tabla </span>                                          
                                          <select name="opCAMPO2"  size="1">
                                        <option value="0"> --- </option>
                                        <option value="1">INEGI</option>
                                        <option value="2">VIDEOS</option>
                                          </select>
&nbsp;</div></td>

<input type="reset" value="Restablecer" class="BotonClear"></td>
                                    </tr>
                                    
                                    <tr>
                                  <td width="100%" height="496" colspan="2" align="center"><div align="center"><span class="Estilo5"></span>
                        <iframe id="busqueda" src="consultas.php" name="busqueda" style="width:545px; height:475px"></iframe></td>
                            </tr>
                                  </table>

                        </td>
                    </tr>
                </table></FORM> 
Consultas.php
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 
$Tbusq 
$_POST["opCAMPO1"]; 
$accion $_POST["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 
'':
    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>
  #10 (permalink)  
Antiguo 22/01/2010, 17:28
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 9 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
  #11 (permalink)  
Antiguo 22/01/2010, 18:18
 
Fecha de Ingreso: enero-2010
Mensajes: 31
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con paginacion.. no me muestra las demas paginas

Muchas Gracias por toda tu ayuda SoutlinK ya ha quedado muy bien agradesco la pasiencia que tuviste conmigo solo tuve unos detallitos en cuanto a "anterior" y "siguiente" no funcionaban bien pero ya lo arregle haciendo esto:

Para Anterior
Esto:
Código PHP:
 if($pagina 1)  
    { 
        echo 
"<a href='consultas.php?pagina=".($pagina--)."'>< Anterior</a> ";  
  } 
Por Esto:
Código PHP:
if($pagina-0
    {
        echo 
"<a href='consultas.php?pagina=".($pagina-1)."'>< Anterior</a> "
  } 
Para Siguiente
Esto:
Código PHP:
 if ($pagina $total_paginas
    { 
        
//Si tenemos mas páginas que la actual 
        
echo " <a href=\"consultas.php?pagina=".($pagina++)."\">Siguiente ></a>"
    } 
Por Esto:
Código PHP:
 if (($pagina+1) <= $total_paginas)
    {
        
//Si tenemos mas páginas que la actual
        
echo " <a href=\"consultas.php?pagina=".($pagina+1)."\">Siguiente ></a>";
    } 
y ya quedo muy bien ahora solo un detallito si cierro la pagina y la vuelvo abrir la sesion sigue activa como le hago para que cuando cierre la pagina se destruya la sesion asi cuando se vuelva abrir la busqueda este en 0.

Es que esto es un catalogo para una biblioteca (simulada) en una escuela asi que digamos que viene uno hace su busqueda cierra viene otro hace su busqueda y asi... tons cuando el otro abre sigue la busqueda anterior.

se que es algo con session_destroy() pero si la pongo al final regreso al mismo error de que no me mostra nada mas.
  #12 (permalink)  
Antiguo 23/01/2010, 05:28
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: Problema con paginacion.. no me muestra las demas paginas

Si no me equivoco, consultas.php solo lo cargas por un iframe no?

Pues entonces, la primera vez que se cargue, que se varien las $_SESSION

NOs e si me e explicado
  #13 (permalink)  
Antiguo 23/01/2010, 18:28
 
Fecha de Ingreso: enero-2010
Mensajes: 31
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con paginacion.. no me muestra las demas paginas

tu dices que valide la sesion la primera vez ke cargue no??
  #14 (permalink)  
Antiguo 24/01/2010, 04:43
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: Problema con paginacion.. no me muestra las demas paginas

La primera vez que se cargue que se borren las sessiones
  #15 (permalink)  
Antiguo 24/01/2010, 10:23
 
Fecha de Ingreso: enero-2010
Mensajes: 31
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con paginacion.. no me muestra las demas paginas

pero eso no me causaria problemas en la busqueda ??? digo al cargar la pagina 2 del paginador me cargaria otra vez y si se borrarian las sesiones o como dices tu??? podrias explicarme un poco mas?
  #16 (permalink)  
Antiguo 25/01/2010, 04:31
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: Problema con paginacion.. no me muestra las demas paginas

Cuando cargas el catalogo.html por primera vez, tienes que vaciar la sesion.

Para esto necesitas que catalogo.html sea catalogo.php y bien con javascript llamar mediante ajax a otra pagina php para que vacie estas sesiones.

Por lo que e é entendido tu pagina funciona de este modo.
  1. Entras en la página:
  2. Entras en catalogo.html (Aquí tenemos que borrar las sesiones)
  3. Se realiza la busqueda (Se guardan las sesiones nuevas)
  4. Se finaliza la busqueda
  5. Vuelta a empezar

Entonces de este modo conseguimos que las sesiones sean nuevas
  #17 (permalink)  
Antiguo 25/01/2010, 09:23
 
Fecha de Ingreso: enero-2010
Mensajes: 31
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con paginacion.. no me muestra las demas paginas

Asi es asi funciona basicamente este buscador.. bueno voy a checar como hacerlo pero ya la idea me la has dado apenas tenga ya la solucion la posteo a ver si va bien ok?? gracias de nuevo por toda tu ayuda.

Una pregunta?? se podria hacer que al cargar catalogo.php busque si existe la session y la borre?? en vez de usar el javascript y el ajax por que soy mas malo para estas 2 que para PHP xD de todas maneras hare lo que dices

Última edición por m4sterz3r0; 25/01/2010 a las 09:45
  #18 (permalink)  
Antiguo 29/01/2010, 01:05
 
Fecha de Ingreso: enero-2010
Mensajes: 31
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con paginacion.. no me muestra las demas paginas

hola soutlink despues de muchos dias y varias pruebas con ajax, paginadores con ajax he resuelto el problema usando esto en la pagina "catalogo.php"
Código PHP:
<?php
session_name
("biblioteca");
session_start();
if (isset(
$_SESSION['opCAMPO1'])){
session_destroy();
}
?>
y ya cuando abro la pagina si existe la ssion la borra y listo no hay nada ... muchas gracias x toda la ayuda que me brindaste... y la pasiencia sobre todo
  #19 (permalink)  
Antiguo 30/01/2010, 17:12
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: Problema con paginacion.. no me muestra las demas paginas

m4sterz3r0 Siento llegar tan tarde, pero mientras cenaba me acorde del post, y se me ocurrio la solucion.

Código PHP:
Ver original
  1. if (!isset($_POST['opCAMPO1']) && !isset($_POST['txtEXPR1']) && !isset($_GET['pagina']))
  2. {
  3. }

El por que es facil, si no se a definido los parametros de busqueda ni existe una pagina, es quen o hemos echo nada todavia.

Bueno, siento llegar tan tarde. un saludo

Etiquetas: muestra, paginacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:08.