Foros del Web » Programando para Internet » PHP »

No me anda la paginacion

Estas en el tema de No me anda la paginacion en el foro de PHP en Foros del Web. Hola gente, les cuento que estoy haciendo una paginacion y me sale a medias. Cuando hago la busqueda, en la primera pagina me muestra bien ...
  #1 (permalink)  
Antiguo 18/12/2005, 00:41
 
Fecha de Ingreso: diciembre-2005
Mensajes: 4
Antigüedad: 12 años
Puntos: 0
No me anda la paginacion

Hola gente, les cuento que estoy haciendo una paginacion y me sale a medias.
Cuando hago la busqueda, en la primera pagina me muestra bien los datos, pero cuando paso a la pagina 2 se pierde el valor de la variable de busqueda "criterio" y me trae todos los registros.
Les mando el codigo que poseo y a ver si alguien me puede marcar el error, desde ya agradecido.

index.htm:
<form name="form1" method="post" action="busqueda1.php">
<select name="opcion1" id="opcion1">
<option>Compra</option>
<option selected>Venta</option
<option>Alquiler</option>
</select>
<input name="Submit" type="submit" class="Estilo8" value="Buscar">
</form>

busqueda1.php:
<?php
$conn = mysql_connect("localhost","root","");
mysql_select_db("campos",$conn);
$criterio = "";
if ($_POST["opcion1"]!="")
{
$txt_criterio = $_POST["opcion1"];
$criterio = " where operacion like '%" . $txt_criterio . "%'";
}
$TAMANO_PAGINA = 3;
$pagina = $_GET["pagina"];
if (!$pagina)
{
$inicio = 0;
$pagina=1;
}
else
{
$inicio = ($pagina - 1) * $TAMANO_PAGINA;
}
$ssql = "select * from propiedades " . $criterio;
$rs = mysql_query($ssql,$conn);
$num_total_registros = mysql_num_rows($rs);
$total_paginas = ceil($num_total_registros / $TAMANO_PAGINA);
$ssql = "select * from propiedades " . $criterio . " limit " . $inicio . "," . $TAMANO_PAGINA;
$rs = mysql_query($ssql);
$rs= mysql_query($ssql);
$nfilas = mysql_num_rows ($rs);
if ($nfilas > 0)
{
for ($i=0; $i<$nfilas; $i++)
{
$pepe = mysql_fetch_array ($rs);
print ("<TABLE cellspacing='0' cellpadding='0' align= center bgcolor='#dedfde' width=400 height=20 >\n");
print (" <tr><TD align=center class= 'Estilo23' bgcolor='#FF0000'' >".$pepe['operacion']."</TD/n </tr>");
print (" <tr><TD align=center class= 'Estilo13'>"."Propiedad: ".$pepe['tipo']."</TD/n </tr>");
print (" <tr><TD align=center class= 'Estilo13'>".$pepe['descripcion']."</TD/n </tr>");
print (" <tr><TD align=center class= 'Estilo13'>"."Direcci&oacute;n: ".$pepe['direccion']."</TD/n </tr>");
print ("<tr><TD class= 'Estilo13'> "."<A TARGET='_blank' HREF='mapa.php?id=".$pepe['id']."'>Ver mapa</A>" ."</TD>\n </tr>");
print ("<br>");
}
print ("</TABLE>\n");
}
else
print ("No hay comercios de este rubro<p>");
mysql_free_result($rs);
mysql_close($conn);
echo "<p>";
if ($total_paginas > 1)
{
for ($i=1;$i<=$total_paginas;$i++)
{
if ($pagina == $i)
echo $pagina . " ";
else
echo "<a href='busqueda1.php?pagina=" . $i . "&criterio=" .$txt_criterio . "'>" . $i . "</a> ";
}
}
?>
  #2 (permalink)  
Antiguo 18/12/2005, 01:31
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 9 meses
Puntos: 17
El problema que tienes es en busqueda. Cuando pasás a la seguna página pasás el criterio por GET y lo pide por POST. Podés solucionarlo así:
Código PHP:
<?php
$conn 
mysql_connect("localhost","root","");
mysql_select_db("campos",$conn);
$criterio "";
if (
$_POST["opcion1"]!="")
{
$txt_criterio $_POST["opcion1"];
$criterio " where operacion like '%" $txt_criterio "%'";
} elseif (
$_GET['criterio'] != "") {
$txt_criterio $_GET["criterio"];
$criterio " where operacion like '%" $txt_criterio "%'";
}
$TAMANO_PAGINA 3;
$pagina $_GET["pagina"];
if (!
$pagina)
{
$inicio 0;
$pagina=1;
}
else
{
$inicio = ($pagina 1) * $TAMANO_PAGINA;
}
$ssql "select * from propiedades " $criterio;
$rs mysql_query($ssql,$conn);
$num_total_registros mysql_num_rows($rs);
$total_paginas ceil($num_total_registros $TAMANO_PAGINA);
$ssql "select * from propiedades " $criterio " limit " $inicio "," $TAMANO_PAGINA;
$rs mysql_query($ssql);
$rsmysql_query($ssql);
$nfilas mysql_num_rows ($rs);
if (
$nfilas 0)
{
for (
$i=0$i<$nfilas$i++)
{
$pepe mysql_fetch_array ($rs);
print (
"<TABLE cellspacing='0' cellpadding='0' align= center bgcolor='#dedfde' width=400 height=20 >\n");
print (
" <tr><TD align=center class= 'Estilo23' bgcolor='#FF0000'' >".$pepe['operacion']."</TD/n </tr>");
print (
" <tr><TD align=center class= 'Estilo13'>"."Propiedad: ".$pepe['tipo']."</TD/n </tr>");
print (
" <tr><TD align=center class= 'Estilo13'>".$pepe['descripcion']."</TD/n </tr>");
print (
" <tr><TD align=center class= 'Estilo13'>"."Direcci&oacute;n: ".$pepe['direccion']."</TD/n </tr>");
print (
"<tr><TD class= 'Estilo13'> "."<A TARGET='_blank' HREF='mapa.php?id=".$pepe['id']."'>Ver mapa</A>" ."</TD>\n </tr>");
print (
"<br>");
}
print (
"</TABLE>\n");
}
else
print (
"No hay comercios de este rubro<p>");
mysql_free_result($rs);
mysql_close($conn);
echo 
"<p>";
if (
$total_paginas 1)
{
for (
$i=1;$i<=$total_paginas;$i++)
{
if (
$pagina == $i)
echo 
$pagina " ";
else
echo 
"<a href='busqueda1.php?pagina=" $i "&criterio=" .$txt_criterio "'>" $i "</a> ";
}
}
?>
Un par de consejos extras
Código PHP:
//en vez de 
for ($i=0$i<$nfilas$i++)
{
$pepe mysql_fetch_array ($rs);

//podés usar
while ($pepe mysql_fetch_array ($rs)) { 
Código PHP:
//en vez de usar
mysql_fetch_array ($rs)
//conviene usar
mysql_fetch_assoc($rs)
//poruqe te genera sólo el array por nombre de campo (como lo llamás) y fetch_array te genera también el númerico, demorando más la página 
  #3 (permalink)  
Antiguo 18/12/2005, 20:53
 
Fecha de Ingreso: diciembre-2005
Mensajes: 4
Antigüedad: 12 años
Puntos: 0
Gracias Seppo

Gracias Seppo, lo voy a probar y despues te digo.
Te agradezco nuevamente tu ayuda.
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 12:35.