Foros del Web » Programando para Internet » PHP »

paginado con link para siguiente

Estas en el tema de paginado con link para siguiente en el foro de PHP en Foros del Web. Hola a todos, tengo este codigo de paginado que me funciona bien, en este caso el tamaño de la pagina que establezco es 6. tambien ...
  #1 (permalink)  
Antiguo 27/04/2010, 10:40
Avatar de JOSANCIN  
Fecha de Ingreso: septiembre-2008
Ubicación: huesca
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 0
paginado con link para siguiente

Hola a todos, tengo este codigo de paginado que me funciona bien, en este caso el tamaño de la pagina que establezco es 6.
tambien tiene un buscador para poner una palabra y que busque los registros que la contienen.
Lo que no consigo es poner el link para que me busque la siguiente pagina, por ejemplo, si estoy en la 2a que al apretar a siguiente vaya a la tercera

He intentado sin exito hacer:


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> ";
echo "<a href='index.php?siguiente=6"."'>"."siguiente"."</a> ";

}

y despues:

if (isset($_GET['siguiente']) && $_GET['siguiente']!=""){
$inicio=$inicio+6;

}

pero no me sale, agradeceria si alguien supiese como



<?php
//Limito la busqueda
$TAMANO_PAGINA = 6;
//examino la página a mostrar y el inicio del registro a mostrar
if (!isset($_GET["pagina"])){
$pagina=1;
}
else{

$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

//establezco en principio $criterio="";
include("funcionesMySql.php");
conectar("tiempo");
$a=mysql_query("set names utf8");
$criterio="";
$ssql = "select * from numeros order by nombre asc" . $criterio;
$rs = mysql_query($ssql);
$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>";


//inicializo el criterio y recibo cualquier cadena que se desee buscar
$criterio = "";
if (isset ($_GET["criterio"]) && $_GET["criterio"]!=""){
$txt_criterio = $_GET["criterio"];
$criterio = " where nombre like '%" . $txt_criterio . "%'";
}
else{ $txt_criterio=$criterio; }

$ssql = "select * from numeros order by nombre " . $criterio . " limit " . $inicio . "," . $TAMANO_PAGINA;

$rs = mysql_query($ssql);
while ($fila = mysql_fetch_object($rs)){
echo $fila->nombre." ";
echo $fila->pais . "<br>";
}

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> ";

}

}

?>


<form action="index.php" method="get">
criterio de busqueda:
<input type="text" name="criterio" size="22" maxlenght="150">
<input type="submit" value="buscar">
</form>
  #2 (permalink)  
Antiguo 27/04/2010, 19:39
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: paginado con link para siguiente

Hola

Bueno, intente manejarlo pero no se que tienes en esto

//establezco en principio $criterio="";
include("funcionesMySql.php");
conectar("tiempo");
$a=mysql_query("set names utf8");

1. que hay en funcionesMySql.php?
2. imagino que conectar esta allá, como funciona?
3. para que es el set names utf8?

y pues luego de esas dudas, seguiria probando

saludos
  #3 (permalink)  
Antiguo 28/04/2010, 02:31
Avatar de JOSANCIN  
Fecha de Ingreso: septiembre-2008
Ubicación: huesca
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: paginado con link para siguiente

Hola, que tal?
Gracias por responder:
funcionesmysql.php tiene simplemente unas funciones para conectar con la base de datos, la funcion conectar esta en ese archivo
lo otro:
$a=mysql_query("set names utf8") me lo dijeron el otro dia y sirve para no tener problemas con los acentos o las ñ, pruebalo, va muy bien.
Hay que ponerlo siempre al principio del script

Si se te ocurre como poner lo de siguiente ya me diras.

Que vaya bien.
  #4 (permalink)  
Antiguo 28/04/2010, 12:17
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: paginado con link para siguiente

Hola

Bueno, puse el código a funcionar y página y pasa entre las páginas
bien, lo puse por aquí, y no le he modificado nada más
que la conexión (usando directamente mysql_connect y mysql_select_db) y las urls (index por indexnumeros)

Tu problema en que momento se da?
Cuando realizas una búsqueda en específico?
o en otro momento?

saludos
  #5 (permalink)  
Antiguo 28/04/2010, 13:28
fiu
 
Fecha de Ingreso: diciembre-2006
Ubicación: Barcelona
Mensajes: 128
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: paginado con link para siguiente

mostrar el boton siguiente deberia ir fuera del for

Cita:
echo "<a href='index.php?siguiente=6"."'>"."siguiente"."</a> ";
y estas pasando la variable pagina pero ademas siguiente ?
no es necesario la segunda, con tener la primera vale y lo muestras con un IF:

Código:
$totalPaginas = ceil($totalResultados/$resultadosAMostrar);
if($_GET['pagina']<$paginas) { echo "index.php?pagina=".$_GET['pagina']+1; }
ahi cuentas el total de paginas que tienes que son todos los resultados que la base de datos devuelve divididos entre los resultados que muestras por pagina. Te aconsejo usar la funcion ceil() que si esa division te da 4,5 te devolverá 5 (4 paginas con 6 resultados y una quinta con 3 en tu caso)

luego recoges la variable pagina, compruebas que es menor al total de paginas que hay, y si es así, le muestras un link para la siguiente página.

Creo que van por ahi los tiros, sino te pego algun ejemplo que tengo hecho.

Etiquetas: link, paginado, siguiente
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:42.