Foros del Web » Programando para Internet » PHP »

paginacion php

Estas en el tema de paginacion php en el foro de PHP en Foros del Web. Hola Aca estoy intentando realizar mi primer paginacion de resultados de una consulta sql. Me guie por un link delf foro que apunta a un ...
  #1 (permalink)  
Antiguo 27/11/2009, 19:16
 
Fecha de Ingreso: julio-2009
Mensajes: 311
Antigüedad: 14 años, 9 meses
Puntos: 0
Pregunta paginacion php

Hola
Aca estoy intentando realizar mi primer paginacion de resultados de una consulta sql.
Me guie por un link delf foro que apunta a un tutorial de paginacion php
Logre que limite los resultados y que presente en pantalla los resultados de la primer pagina bien y con linda presentacion.
Tambien aparece el navedador para las demas paginas de la busqueda .
Pero si bien funcionan los link para pagina 2 y siguientes al mostrarlas no me muestra los registros correspondientes a esa pagina (ni otros)
Voy a pegar el codigo a ver si alguien me ayuda a encuentrar que error tengo pues hace dos dias que reviso y reviso y no me puedo dar cuenta.
-Desde ya muchas gracias por cualquier aporte que me puedan dar

Creo que el error está en la condicion que pongo para que se ejecute el codigo php cuando se pulsa el boton enviar.
if (!$_POST['tpropiedad']){
Este condicional al entrar en pagina 2 no se cumple y por eso no se ejecuta todo el bloque de codigo que haria que mostraraeen la pagina 2 los registros correspondientes.
Como podria cambiar ese condicional por algo que algo que signifique que si el usuario presiono el boton sumit se ejecute el codigo php





<?php
if (!$_POST['tpropiedad']){
}else{

$tpropiedad = $_POST['tpropiedad'];
$toperacion = $_POST['toperacion'];

include 'db.php';

//paginacion
$registros = 4;
// detectar si la variable $pagina (indica el numero de pagina actual) esta definida,
//si no es así le damos el valor 1 ósea que si no se paso por la url la variable $pagina (por ejemplo: "paginacion.php?pagina=2") entramos a la pagina 1 directamente...
$pagina = $_GET["pagina"];

if (!$pagina) {
$inicio = 0;
$pagina = 1;
}
else {
$inicio = ($pagina - 1) * $registros;
}
//realizamos 2 consultas similares en cuanto a su criterio de selección
//Con la primer consulta obtenemos el numero de registros totales.

$consultaSQL="SELECT * FROM avisos WHERE tpropiedad='".$tpropiedad."' && toperacion='".$toperacion."'" ;
$result=mysql_query($consultaSQL);
$total_registros = mysql_num_rows($result);

$consultaSQL="SELECT * FROM avisos WHERE tpropiedad='".$tpropiedad."' && toperacion='".$toperacion."'"."ORDER BY valor DESC LIMIT $inicio, $registros" ;
$result=mysql_query($consultaSQL);
//Para comprobar la cantidad de resultados arrojados por la consulta mysql_num_rows

if( mysql_num_rows( $result) < 1) {
$mensaje1=" No hay avisos que coincidan con su busqueda";
echo '<td></td><td><font color="darkgray"><font size="3">'.$mensaje1.'<img src="http://www.forosdelweb.com/f18/images/busq.png" alt="" width="45" height="35"></td>';
}

//ceil devuelve el valor entero más alto con respecto al número que se ha pasado como argumento a la función:

$total_paginas = ceil($total_registros / $registros);
//echo "Total páginas".$total_paginas;
//echo "Total de registros".$total_registros;
if($total_registros) {
while ($row=mysql_fetch_array($result))
{
$valor='U$S '.$row["valor"];

echo '<tr ><td valign="TOP"><font color="black"><font size="3"><img src="http://www.forosdelweb.com/f18/images/productos/'.$row["imagen1"].'" alt="" width="90" height="75"></td>';
echo '<td valign="TOP"><font color="black"><font size="3">'.$row["txt"].'</td>';
echo '<td valign="TOP"><font color="red"><font size="3"><b>'.$valor.'<br>'.$row["fpago"].'</b></td>';

if($row["preminum"]=="Si")
{
echo '<td valign="TOP"><a href="verAviso2.php?id='.$row["idAviso"].'"><img src="http://www.forosdelweb.com/f18/images/verMas.gif"></td>'; }
echo '</tr>';
}
}
}
?>
<table width="38" align="right" cellpadding="3" cellspacing="3">
<tr>
<td width="24" bgcolor="#000000"><?
// El Navegador de páginas

//muestra el link a la pagina anterior
if(!empty($result)){ mysql_free_result($result);}
if($total_registros) {

if(($pagina - 1) > 0) {
echo "<tr><td><font size='3'><a href='pg3.php?pagina=".($pagina-1)."'>< Anterior</a></td>";
}
//El link a la pagina anterior será visible siempre y cuando no estemos en la primer
//pagina ($pagina - 1) > 0). La segunda parte del navegador de paginas seria la que muestra la cantidad de paginas...
for ($i=1; $i<=$total_paginas; $i++){
if ($pagina == $i) {
echo "<b>".$pagina."</b> ";
} else {
echo "<td><a href='pg3.php?pagina=$i'>$i</a></td>";
} }

//muestra el enlace a la pagina siguiente...
if(($pagina + 1)<=$total_paginas) {
echo "<td><a href='pg3.php?pagina=".($pagina+1)."'>Siguiente</a><br></td></tr>";

}
}
?></td>
</tr>
</table>

Última edición por marcos46g; 27/11/2009 a las 19:45
  #2 (permalink)  
Antiguo 27/11/2009, 20:24
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: paginacion php

Efectivamente tu problema es por tomar las variables desde $_POST, en un buscador siempre es conveniente que lo hagas desde $_GET, ademas de que te faltaria complementar los links:

echo "<td><a href='pg3.php?tpropiedad=$tpropiedad&amp;toperacion=$toperacion& amp;pagina=$i'>$i</a></td>";

Por otra parte, para contar los registros estas solicitando todos los campos de la tabla y eso no es necesario:
Código php:
Ver original
  1. $consultaSQL="SELECT COUNT(*) FROM avisos WHERE tpropiedad='$tpropiedad' AND toperacion='$toperacion'" ;
  2. $result=mysql_query($consultaSQL);
  3. list($total_registros) = mysql_fetch_row($result);

Si tpropiedad y toperacion son numericos, no necesitarian estar entre comillas y, por seguridad, obtenlos asi:
Código php:
Ver original
  1. // Debes verificar que realmente esta disponible desde la URL
  2.  
  3. // Si esperas un valor numerico (entero):
  4. $tpropiedad = (isset($_GET['tpropiedad'])) ? intval($_GET['tpropiedad']) : 0;
  5.  
  6. // Si esperas un valor alfanumerico:
  7. $tpropiedad = (isset($_GET['tpropiedad'])) ? trim($_GET['tpropiedad']) : '';
  8. // Pero debes escaparlo antes de colocarlo en una consulta:
  9. $tpropiedad = mysql_real_escape_string($tpropiedad);
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 27/11/2009 a las 20:30
  #3 (permalink)  
Antiguo 01/12/2009, 19:05
 
Fecha de Ingreso: julio-2009
Mensajes: 311
Antigüedad: 14 años, 9 meses
Puntos: 0
Pregunta Respuesta: paginacion php

Muchisimas Gracias por tu ayuda Es invalorable lo que me ha facilitado mi proyecto
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 11:58.