Foros del Web » Programando para Internet » PHP »

Problema de paginacion de resultados

Estas en el tema de Problema de paginacion de resultados en el foro de PHP en Foros del Web. Hola a todos... He empezado a desarrollar una web con php, la verdad que no tengo nada de experiencia, pero esperemos que con el tiempo ...
  #1 (permalink)  
Antiguo 15/02/2008, 04:33
 
Fecha de Ingreso: febrero-2008
Mensajes: 3
Antigüedad: 16 años, 2 meses
Puntos: 0
Problema de paginacion de resultados

Hola a todos...

He empezado a desarrollar una web con php, la verdad que no tengo nada de experiencia, pero esperemos que con el tiempo y con las ganas de aprender pueda adquirir la pericia necesaria y ser uno mas al que puedan recurrir.

El problema que tengo es el siguiente.
estoy viendo la parte de busqueda, pero tengo problemas con la paginacion de dichos resultados, solo me muestra los resultados en la primera pagina, pero cuando voy a las siguientes aparece la pagina en blanco.
Este es el codigo..


<?
$base="xxx";
$con=mysql_connect("localhost","xxx","xxx");
mysql_select_db($base,$con);

if(isset($_POST['enviar'])){
$pg = 0; // $pg es la pagina actual
$cantidad=9; // cantidad de resultados por página
$inicial = $pg * $cantidad;

$qry = "SELECT id, nombre, titulo, precio FROM productos WHERE descripcion LIKE '%{$_POST['palabra']}%' OR precio LIKE '%{$_POST['palabra']}%' OR modelo LIKE '%{$_POST['palabra']}%' OR clase LIKE '%{$_POST['palabra']}%' OR elaborado LIKE '%{$_POST['palabra']}%' OR nombre LIKE '%{$_POST['palabra']}%' OR titulo LIKE '%{$_POST['palabra']}%' ORDER BY id LIMIT $inicial,$cantidad";

$cad = mysql_db_query($base,$qry) or die (mysql_error());

$contar = "SELECT id, nombre, titulo, precio FROM productos WHERE descripcion LIKE '%{$_POST['palabra']}%' OR precio LIKE '%{$_POST['palabra']}%' OR modelo LIKE '%{$_POST['palabra']}%' OR clase LIKE '%{$_POST['palabra']}%' OR elaborado LIKE '%{$_POST['palabra']}%' OR nombre LIKE '%{$_POST['palabra']}%' OR titulo LIKE '%{$_POST['palabra']}%' ORDER BY titulo";

$contarok= mysql_db_query($base,$contar);
$total_records = mysql_num_rows($contarok);
$pages = intval($total_records / $cantidad);

print "<table border=0 cellspacing=2 cellpadding=2 width=10%>";
while($array = mysql_fetch_array($cad)){

if($b==0){echo"<tr>";}
print "<td align='center'>
<a href='mostrar_archivo.php?id=$array[id]'>
<img src='descargar_archivo.php?id=$array[id]' start='fileopen' align='middle'>
<br>
</a>
$array[titulo]<br>
$array[nombre]<br>
($array[precio])
</td>";

if($b==2){"<tr>";
$b=0;
}else{$b=$b+1;}
}

echo"</table>";

// Cerramos la conexión a la base

//$con=mysql_close($con);
// Creando los enlaces de paginación
echo "<p>";
if ($pg <> 0)
{
$url = $pg - 1;
echo "<a href='$PHP_SELF?pg=".$url."'>« Anterior</a> ";
}
else {
echo " ";
}

for ($i = 0; $i<($pages + 1); $i++) {
if ($i == $pg) {
echo "<font face=Arial size=2 color=ff0000><b> $i </b></font>";
}
else {
echo "<a href='$PHP_SELF?pg=".$i."'>".$i."</a> ";
}
}

if ($pg < $pages) {
$url = $pg + 1;
echo "<a href='$PHP_SELF?pg=".$url."'>Siguiente »</a>";
}
else {
echo " ";
}
echo"</p>";
}
?>

Gracias a todos, espero que alguien me pueda ayudar a solucionar este problema
  #2 (permalink)  
Antiguo 15/02/2008, 05:04
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Re: Problema de paginacion de resultados

Cuando pinchas en un link, se carga el script desde cero. Desaparecen todos los valores de $_POST, solo tendras los $_GET que esten en el link que han pinchado. Como $_POST esta vacio, tus consultas no devuelven registros y por eso no se muestra nada.

Asi que no te queda otra que pasar todos los valores que recibes por POST y añadirlos en los enlaces de la paginacion. Y en la carga de las paginas de paginacion tampoco estaran en POST, sino en GET, asi que podrias usar $_REQUEST para no tener que estar haciendo la diferencia.

Asi que tus links de paginacion quedaran

echo "<a href='$PHP_SELF?pg=".$i."&palabra=".$_REQUEST['palabra']."'>".$i."</a> ";
  #3 (permalink)  
Antiguo 15/02/2008, 06:20
 
Fecha de Ingreso: febrero-2008
Mensajes: 3
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Problema de paginacion de resultados

Te estoy agradecido por la respuesta amigo Darkj.

He cambiado el modo de recibir los valores por GET tanto en el formulario como en la pagina de resultados, pero al hacer la busqueda de una palabra determinada, me vuelca los resultados de toda la base de datos .

El codigo del formulario es el siguiente


<div align="center">
<form name="buscador" method="get" action="Busqueda.php">
<div align="center">
<input type="text" name="palabra"><br><br>
<input type="submit" value="Enviar" name="enviar">
</div>

Podrias orientarme en que parte del codigo necesito hacer las modificaciones.

Saludos Cordiales
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 05:50.