paginacion2

robe
26 de Febrero del 2005
realizo una busqueda y al paginar los resultados siempre muestra el mismo registro. utilizo el start session y el register session para guardar el valor de las variables al canviar de pagina. Tendria que cerrar la sesion con un IF o algo asi ¿? es urgente, muchas gracias.
Salu2, robe

Alfredo
26 de Febrero del 2005
No necesitas usar sesiones, sin embargo si las usas recuerda utilizar
$_SESSION[variable];

<?php
include('../lib/conectabd.php');
$campo = 'clave_conta';
$valor = '0';

$seleccion = "WHERE ".$campo.' = '.$valor;

$sql = "SELECT * FROM bienes ".$seleccion;
$conexion = mysql_query($sql);

$total_encontrados = mysql_affected_rows();
$registros_x_pagina = 20;
$total_paginas = round($total_encontrados/$registros_x_pagina);

echo 'Registros Encontrados: '.$total_encontrados.'<br>';
echo 'TOTAL PAGINAS '.$total_paginas.'<br><br>';

if(!$_GET['pagina_actual']){
$pagina_actual = 0;
}
else{
$pagina_actual = $_GET['pagina_actual'];
}

$sql = "SELECT * FROM bienes ".$seleccion." LIMIT ".$pagina_actual.",".$registros_x_pagina;
$conexion = mysql_query($sql);
$resultado = mysql_fetch_array($conexion);

$contador = 1;

do{

echo $contador.' .- '.$resultado[marbete].' - ';
echo $resultado[descripcion].'<br>';
$contador++;

}while($resultado = mysql_fetch_array($conexion));


?>
<table width="694" border="0" align="center">
<tr>
<td width="70">

<div align="center">
<?php
if($pagina_actual != 0){
$pagina_anterior = $pagina_actual - 1;
echo '<a href="paginar.php?pagina_actual='.$pagina_anterior.'">Anterior</a>';
}
?>
</div>

</td>
<td width="494"> <div align="center">
<?php
for($x=0;$x<$total_paginas;$x++){
echo '<a href="paginar.php?pagina_actual='.$x.'">'.$x.'</a> -';
}
?>
</div></td>
<td width="64">
<div align="center">
<?php
if($pagina_actual != $total_paginas){
$pagina_siguiente = $pagina_actual + 1;
echo '<a href="paginar.php?pagina_actual='.$pagina_siguiente.'">Siguiente</a>';
}
?>
</div></td>
</tr>
</table>

Banshee
26 de Febrero del 2005
Guenas...
Yo personalmente me suelo dekantar por pasarle un parametro (offset) por url para paginar. Suele ser lo mas efectivo y rápido. Aun y todo se puede hacer trankilamente con variables de sesion komo tu dices usando el start_session y el register_session. Aun y todo debes asegurarte de poner el komienzo de session en un if del estilo de:
if (!isset($sesion))
{
session_register('sesion');
}
(en este ejemplo la variable global se llama sesion)
esto lo tienes ke hacer para asegurarte de no machacar el valor anterior.
Si esto no te funciona no es problema de variables si no ke te falta el mover el recordset o algo similar.

Espero ke esto te ayude...

BANSHEE