Foros del Web » Programando para Internet » PHP »

paginacion

Estas en el tema de paginacion en el foro de PHP en Foros del Web. Hola... nuevamente necesito ayuda tengo un form: <form action="z.php" method="post" name="form"> <input type="text" name="codigo" size="15"> <input type="submit" name="buscar" value="buscar"> </form> para buscar un "codigo" de ...
  #1 (permalink)  
Antiguo 28/06/2004, 22:19
Avatar de Ludwingg  
Fecha de Ingreso: diciembre-2002
Ubicación: San Salvador
Mensajes: 951
Antigüedad: 15 años
Puntos: 5
paginacion

Hola... nuevamente necesito ayuda

tengo un form:

<form action="z.php" method="post" name="form">
<input type="text" name="codigo" size="15">
<input type="submit" name="buscar" value="buscar">
</form>

para buscar un "codigo" de un campo de una base de datos, al hacer un submit soy enviado a un archivo.php que tiene que mostrarme la informacion segun el codigo... he agregado un script para hacer una paginacion, cuando quito todo el codigo relacionado con la paginacion, el script funciona bien, pero si lo agrego no me muestra el contenido de los campos de la base de datos... el codigo que utilizo es: (sospecho que los errores son los que estan en "negrita")

// Datos de conexión a la base
//conecto con la base de datos
$conn = mysql_connect("localhost","","");
mysql_select_db("terrabase",$conn);

//Limito la busqueda
$TAMANO_PAGINA = 10;

//examino la página a mostrar y el inicio del registro a mostrar
$pagina = $_GET["pagina"];
if (!$pagina) {
$inicio = 0;
$pagina=1;
}
else {
$inicio = ($pagina - 1) * $TAMANO_PAGINA;
}
//miro a ver el número total de campos que hay en la tabla con esa búsqueda
$ssql = "Select * From propiedades Where codigo='$codigo' " . $criterio;
$rs = mysql_query($ssql,$conn);
$num_total_registros = mysql_num_rows($rs);
//calculo el total de páginas
$total_paginas = ceil($num_total_registros / $TAMANO_PAGINA);

//pongo el número de registros total, el tamaño de página y la página que se muestra
echo "Número de registros encontrados: " . $num_total_registros . "<br>";
echo "Se muestran páginas de " . $TAMANO_PAGINA . " registros cada una<br>";
echo "Mostrando la página " . $pagina . " de " . $total_paginas . "<p>";

//construyo la sentencia SQL
$ssql = "select * from propiedades Where codigo='$codigo' " . $criterio . " limit " . $inicio . "," . $TAMANO_PAGINA;
$rs = mysql_query($ssql);
while($fila=mysql_fetch_object($rs)){
echo "<table width='100%' border='0' align='center' cellpadding='0' cellspacing='0'>
<tr>
<td width='36%' rowspan='6'><div align='center'> ".$fila["foto1"]."</div></td>
<td width='32%'>nombre ". $fila["nombre"]."</td>
<td width='32%'>precio ".$fila["precio_total"]."</td>
</tr>
<tr>
<td>direccion </td>
<td>". $fila["departamento"]." "
.$fila["municipio"].
"</td>
</tr>
<tr>
<td>Area</td>
<td>". $fila["extension"]."</td>
</tr>
<tr>
<td>precio por vara&sup2;</td>
<td>".$fila["pre_vara"]."</td>
</tr>
<tr>
<td>codigo</td>
<td>".$fila["codigo"]."</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><div align='right'>mas detalles</div></td>
</tr>
</table>";
}
//cerramos el conjunto de resultado y la conexión con la base de datos
mysql_free_result($rs);
mysql_close($conn);
//muestro los distintos índices de las páginas, si es que hay varias páginas
if ($total_paginas > 1){
for ($i=1;$i<=$total_paginas;$i++){
if ($pagina == $i)
//si muestro el índice de la página actual, no coloco enlace
echo $pagina . " ";
else
//si el índice no corresponde con la página mostrada actualmente, coloco el enlace para ir a esa página
echo "<a href='index.php?pagina=" . $i . "&criterio=" . $txt_criterio . "'>" . $i . "</a> ";
}
}

muchas gracias
  #2 (permalink)  
Antiguo 29/06/2004, 01:37
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Creo que para que funcione deberías cambiar la línea:
Código PHP:
while($fila=mysql_fetch_object($rs)){ 
Por
Código PHP:
while($fila=mysql_fetch_assoc($rs)){ 
...
...
O en todo caso, si quieres utilizar mysql_fetch_object, deberás referirte a los valores de los atributos como
Código PHP:
$fila->nombre;
//en lugar de
$fila["nombre"
Saludos
  #3 (permalink)  
Antiguo 29/06/2004, 11:02
Avatar de Ludwingg  
Fecha de Ingreso: diciembre-2002
Ubicación: San Salvador
Mensajes: 951
Antigüedad: 15 años
Puntos: 5
jpinedo, tienes toda la razon, cambie:
$fila["nombre"] por $fila->nombre; y ahora ya puedo ver la informacion, muchas gracias
  #4 (permalink)  
Antiguo 29/06/2004, 20:21
Avatar de Ludwingg  
Fecha de Ingreso: diciembre-2002
Ubicación: San Salvador
Mensajes: 951
Antigüedad: 15 años
Puntos: 5
Hola.. pues tengo otro problema con la paginacion...

la primera pagina de la paginacion la muestra correctamente, y son solamente 10 registros por pagina, pero cuando hago click en uno de los vinculos creados de la paginacion para ver los siguientes diez registros, ya no me muestra nada...

he modificado el script, asi que lo vuelvo a poner:

// Datos de conexión a la base
//conecto con la base de datos
$conn = mysql_connect("localhost","","");
mysql_select_db("terrabase",$conn);

//$result=mysql_db_query("terrabase","Select * From propiedades Where codigo='$codigo'");
//Limito la busqueda
$TAMANO_PAGINA = 10;

//examino la página a mostrar y el inicio del registro a mostrar
$pagina = $_POST["pagina"];
if (!$pagina) {
$inicio = 0;
$pagina=1;
}
else {
$inicio = ($pagina - 1) * $TAMANO_PAGINA;
}
//miro a ver el número total de campos que hay en la tabla con esa búsqueda
$ssql = "Select * From propiedades Where codigo=".$codigo;
$rs = mysql_query($ssql,$conn);
$num_total_registros = mysql_num_rows($rs);
//calculo el total de páginas
$total_paginas = ceil($num_total_registros / $TAMANO_PAGINA);

//pongo el número de registros total, el tamaño de página y la página que se muestra
echo "Número de registros encontrados: " . $num_total_registros . "<br>";
echo "Se muestran páginas de " . $TAMANO_PAGINA . " registros cada una<br>";
echo "Mostrando la página " . $pagina . " de " . $total_paginas . "<p>";

//construyo la sentencia SQL
$ssql = "select * from propiedades Where codigo=".$codigo." limit " . $inicio . "," . $TAMANO_PAGINA;
$rs = mysql_query($ssql);
while($fila=mysql_fetch_object($rs)){
echo "<table width='100%' border='0' align='center' cellpadding='0' cellspacing='0'>
<tr>
<td width='36%' rowspan='6'><div align='center'> <img src=".$fila->foto1.".jpg border=0></div></td>
<td width='32%'>nombre ". $fila->nombre."</td>
<td width='32%'>precio ".$fila->precio_total."</td>
</tr>
<tr>
<td>direccion </td>
<td>". $fila->departamento." "
.$fila->municipio.
"</td>
</tr>
<tr>
<td>Area</td>
<td>". $fila->extension."</td>
</tr>
<tr>
<td>precio por vara&sup2;</td>
<td>".$fila->pre_vara."</td>
</tr>
<tr>
<td>codigo</td>
<td>".$fila->codigo."</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><div align='right'>mas detalles</div></td>
</tr>
</table>";
}
//cerramos el conjunto de resultado y la conexión con la base de datos
mysql_free_result($rs);
mysql_close($conn);
//muestro los distintos índices de las páginas, si es que hay varias páginas
if ($total_paginas > 1){
for ($i=1;$i<=$total_paginas;$i++){
if ($pagina == $i)
//si muestro el índice de la página actual, no coloco enlace
echo $pagina . " ";
else
//si el índice no corresponde con la página mostrada actualmente, coloco el enlace para ir a esa página
echo "<a href='catalogo.php?pagina=" . $i . "&codigo=" . $codigo . "'>" . $i . "</a> ";
}
}

muchas gracias por cualquier ayuda
  #5 (permalink)  
Antiguo 30/06/2004, 18:32
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
El problema al parecer se debe a que estás enviando la variable pagina por url... pero la estás intentando recoger como si hubiese sido enviada por el método POST..

Intenta cambiar la línea
Código PHP:
$pagina $_POST["pagina"];
//Por esta otra
$pagina $_GET["pagina"]; 
Saludos

Última edición por jpinedo; 30/06/2004 a las 18:38
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 15:49.