Foros del Web » Programando para Internet » PHP »

Paginar 10 en 10

Estas en el tema de Paginar 10 en 10 en el foro de PHP en Foros del Web. Tengo este codigo de paginacion de resultados de una base de datos que encontre en la red. Mi duda es: Cuando tengo muchos registros (mas ...
  #1 (permalink)  
Antiguo 02/10/2003, 16:12
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 15 años, 5 meses
Puntos: 0
Paginar 10 en 10

Tengo este codigo de paginacion de resultados de una base de datos que encontre en la red.
Mi duda es: Cuando tengo muchos registros (mas de 500) me aparecen muchos enlaces a las siguientes paginas , pero aparecen todos en forma horizontal lo que hace que la pagina se agrande y aparezca la barra de desplazamiento en la parte inferior de la pagina. ¿ como puedo hacer para que aparezcan los enlaces de 10 en 10 ?

paginar.php

Código PHP:

<html>
<head>
<title>Páginación de resultados</title>
</head>
<body bgcolor=#FFFFFF>

<?
// Datos de conexión a la base
$base="listado";
$con=mysql_connect("localhost","login","pass");
mysql_select_db($base,$con);

if (!isset(
$_GET["pg"])){
   
$pg0;
}else{
$pg $_GET["pg"];
}


//if (!isset($_GET["pg"]))
//$pg = 0; // $pg es la pagina actual
$cantidad=10// cantidad de resultados por página
$inicial $pg $cantidad;

$pegar "SELECT * FROM mp3 ORDER BY nombre_grupo LIMIT $inicial,$cantidad";
$cad mysql_db_query($base,$pegar) or die (mysql_error());

$contar "SELECT * FROM mp3 ORDER BY nombre_grupo"
$contarokmysql_db_query($base,$contar);
$total_records mysql_num_rows($contarok);
$pages intval($total_records $cantidad); ?>

<table align="center" width="55%" height="20%" border="1">
<? //echo "<table>";
// Imprimiendo los resultados
while($array mysql_fetch_array($cad)) {
?> <font face="Verdana" size=2> <?
echo "<tr><td>";
echo 
$array['nombre_grupo']."</td>";
echo 
"<td>";
echo 
$array["nombre_album"]."</td>";
echo 
"<td>";
echo 
$array["numero_cd"]."</td></tr>";

echo 
"</table>";
?> </font> <?
// 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 
"<font face=verdana size=1 color=ff0000><a href='paginar.php?pg=".$url."'><< Anterior</a>&nbsp;";
}
else {
echo 
" ";
}

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

if (
$pg $pages) {
$url $pg 1;
echo 
"<font face=verdana size=1 color=ff0000><a href='paginar.php?pg=".$url."'>Siguiente >></a>";
}
else {
echo 
" ";
}
echo 
"</p>";
?>
<p>&nbsp;</p><p>&nbsp;</p></body>
</html>

Salu2
__________________
AK.T.I.V.E.tm Live, Never DIE

Última edición por KillerBKS; 03/10/2003 a las 12:56
  #2 (permalink)  
Antiguo 02/10/2003, 19:45
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
mira, yo lo 1º que haria es quitar tu user y pass de este post, ya que alguien malintencionado podria hacer alguna de las suyas... anda please, espero que no sean tus datos verdaderos
__________________
3w.valenciadjs.com
3w.laislatv.com
  #3 (permalink)  
Antiguo 03/10/2003, 12:57
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 15 años, 5 meses
Puntos: 0
que hay que cambiar en el codigo pa que pagine de 10 en 10 ??
Salu2
__________________
AK.T.I.V.E.tm Live, Never DIE
  #4 (permalink)  
Antiguo 03/10/2003, 13:05
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
una aclaracion, igual me equivoco pero hay va...

si haces una consulta cada 10 paginas... como veras el resto de las paginas.... osea la 2,3,4,5,6,7,8,9, y asi sucesivamente

no puedes poner mas resultados por pagina,, unos 25 por ejemplo....

siento no poder ayudarte, seguro que un maestro lo hara.

supongo que lo que tu quieres es un paginado dentro de otro...? verdad...
__________________
3w.valenciadjs.com
3w.laislatv.com
  #5 (permalink)  
Antiguo 03/10/2003, 13:36
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 15 años, 5 meses
Puntos: 0
yo quiero lo siguiente:
Aqui van los datos

<< 2,3,4,5,6,7,8,9 >>
y al hacer click en el 9 que aparezca

<< 10,11,12,13,14,15,16,17,18,19 >>

eso ....... que no me muestre todos los enlaces de todas las paginas generadas para ver todos los datos.

Ojala me entiendan

Salu2
__________________
AK.T.I.V.E.tm Live, Never DIE
  #6 (permalink)  
Antiguo 03/10/2003, 13:39
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
ok eso si lo entiendo

mira, si lo que quieres es mostrar menos caracteres puedes usar esto

Código PHP:

$texto 
substr ($texto032);// solo muestra los 1º 32 caracteres 
ajustalo a lo que quieres o necesitas
__________________
3w.valenciadjs.com
3w.laislatv.com
  #7 (permalink)  
Antiguo 03/10/2003, 14:05
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 15 años, 5 meses
Puntos: 0
Gracias
__________________
AK.T.I.V.E.tm Live, Never DIE
  #8 (permalink)  
Antiguo 03/10/2003, 14:24
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
denada hombre... hasta pronto... ;)
__________________
3w.valenciadjs.com
3w.laislatv.com
  #9 (permalink)  
Antiguo 03/10/2003, 14:37
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

El "truco" es cambiar dinamicamente (que bien suena) los valores de inicion y final del bucle for.

Mira, primero modificamos un poco tu codigo, pero para que siga haciendo lo mismo:
Código PHP:
$inicio=0;
$final=$pages+1;
for (
$i $inicio$i<$final$i++) {

if (
$i == $pg) {

echo 
"<font face=verdana size=1 color=ff0000><b>&nbsp;$i&nbsp;</b></font>";

}

else {

echo 
"<font face=verdana size=1 color=ff0000><a href='paginar.php?pg=".$i."'>".$i."</a>&nbsp;";

}


Como ves, solo he creado 2 variables, las he dado un valor fijo, y las he sustituido en el for. Sigue paginando como antes.

Pero empecemos a jugar con esas variables. ¿Que pasa si ponemos :
Código PHP:
$inicio=$pg - ($pg 10);
if (
$inicio<0) {
  
$inicio=0;
}
$final=$inicio+10;
if (
$final > ($pages+1)) {
  
$final=$pages+1;

Pruebalo. Y juega con esos dos valores, $inicio y $final. Los calculas en funcion de $pg, controlando asi los links que muestras.

Otra cosa, tu queja es que aparecia la barra de desplazamiento horizontal. Si no te importa agrandarlo en vertical, puedes poner los links en varias lineas (he visto galerias de imagenes de mas de cien paginas que lo ponian asi). Para ello solo tendrias que añadir un salto de linea detras del decimo indice:
Código PHP:
for ($i 0$i<($pages 1); $i++) {
if ((
$i 10)==9) {  // nueve porque es 0 - 9
  
echo '<br>';
}

if (
$i == $pg) {

echo 
"<font face=verdana size=1 color=ff0000><b>&nbsp;$i&nbsp;</b></font>";

}

else {

echo 
"<font face=verdana size=1 color=ff0000><a href='paginar.php?pg=".$i."'>".$i."</a>&nbsp;";

}


Saludos.

PD: Por si no lo sabes el % es el operador modulo, que devuelve el resto de la division entera del primer operando entre el segundo.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 03/10/2003, 20:26
 
Fecha de Ingreso: agosto-2003
Ubicación: Mexico Df abajo del puente de municipio
Mensajes: 216
Antigüedad: 14 años, 3 meses
Puntos: 0
Re: Paginar 10 en 10

Tengo el mismo código pero como le puedo hacer.

Tengo mi url/descargas.php
dentro de estas estan 3 links
uno hacia
pero cuando kiero hacer el cambio de página descargas.php?id=mixers&pg=1 me sale mo mismo que el descargas.php?id=mixers.
como le puedo hacer para el &pg=1
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:15.