Foros del Web » Programando para Internet » PHP »

Paginacion por abecedario

Estas en el tema de Paginacion por abecedario en el foro de PHP en Foros del Web. He encontrado un sistema de paginacion de resultados pero me gustaria saber como poner para que en vez de ponermelos por id, que me los ...
  #1 (permalink)  
Antiguo 31/05/2003, 19:27
Avatar de Gryphus  
Fecha de Ingreso: febrero-2003
Ubicación: Spain
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
Paginacion por abecedario

He encontrado un sistema de paginacion de resultados pero me gustaria saber como poner para que en vez de ponermelos por id, que me los ponga por la primera letra del nick.
Este es el codigo del sistema de paginacion:
<html>
<head>
<style>
a {text-decoration:none;}
</style>
</head>
<body>
<?php
//reemplazar “servidor”, ”usuario” y ”contraseña” por los datos correctos
$link = mysql_connect("servidor", "usuario", "contraseña");
//reemplazar “base” por el nombre de la base
mysql_select_db("base_datos", $link);
$pag=$HTTP_GET_VARS["pag"];
if (!isset($pag)) $pag = 1;
//reemplazar “tabla” por el nombre de la tabla
$result = mysql_query("SELECT COUNT(*) FROM usuarios", $link);
list($total) = mysql_fetch_row($result);
$tampag = 2;
$reg1 = ($pag-1) * $tampag;
//reemplazar “campos” por el nombre de los campos que se quieren mostrar

$result = mysql_query("SELECT id, nick FROM usuarios ORDER BY id DESC LIMIT $reg1, $tampag", $link);
if (mysql_num_rows($result)){
echo "<table width='150' align='center' border = '1' cellspacing='0' cellpadding='0' bordercolor='#008080'> \n";
echo "<tr><td align='center'>dato 1</td><td align='center'>dato 2</td></tr> \n";
while ($row = @mysql_fetch_array($result)) {
echo "<tr><td align='center'>".$row["id"].
"</td><td align='center'>".$row["nick"]."</td></tr> \n";
}
echo "</table><br> \n";
}
else
echo "No hay datos";


function paginar($actual, $total, $por_pagina, $enlace) {
$total_paginas = ceil($total/$por_pagina);
$anterior = $actual - 1;
$posterior = $actual + 1;
if ($actual>1)
$texto = "<td><a href=\"$enlace$anterior\" style='background-color:#ffffff;width:100%;color:#008080;text-align:center;'>&laquo;</a></td> ";
else
$texto = "<td><b style='background-color:#ffffff;width:100%;color:#008080;text-align:center;'>&laquo;</b></td> ";
for ($i=1; $i<$actual; $i++)
$texto .= "<td><a href=\"$enlace$i\" style='background-color:#ffffff;width:100%;color:#008080;text-align:center;'>$i</a></td> ";
$texto .= "<td><b style='background-color:#008080;width:100%;color:#ffffff;text-align:center;'>$actual</b></td> ";
for ($i=$actual+1; $i<=$total_paginas; $i++)
$texto .= "<td><a href=\"$enlace$i\" style='background-color:#ffffff;width:100%;color:#008080;text-align:center;'>$i</a></td> ";
if ($actual<$total_paginas)
$texto .= "<td><a href=\"$enlace$posterior\" style='background-color:#ffffff;width:100%;color:#008080;text-align:center;'>&raquo;</a></td>";
else
$texto .= "<td><b style='background-color:#ffffff;width:100%;color:#008080;text-align:center;'>&raquo;</b></td>";
return $texto;
}

?>
<table border=1 width="150" cellpadding="0" cellspacing="0" bordercolor=#008080 align="center"><tr>
<?
echo paginar($pag, $total, $tampag, "paginacion.php?pag=");
?>
</tr></table>
</body>
</html>
  #2 (permalink)  
Antiguo 31/05/2003, 23:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si se trata de ordenar por Nick .. (orden alfabético ..):

Código PHP:
$result mysql_query("SELECT id, nick FROM usuarios ORDER BY nick DESC LIMIT $reg1, $tampag"$link); 
El "ORDER BY campo" .. en tu caso nick en lugar del id ..

¿Es eso lo que buscas?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 01/06/2003, 05:46
Avatar de Gryphus  
Fecha de Ingreso: febrero-2003
Ubicación: Spain
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
Lo que quiero hacer es poner una seccion de Usuarios y dentro de esta las letras del abecedario, para que cuando le des a A por ejemplo te salgan todos los usuarios que tengan por 1ª letra de su nick la A y asi con todas las demas letras
  #4 (permalink)  
Antiguo 01/06/2003, 20:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues entonces debes hacer una consulta tipo:

SELECT * FROM tabla WHERE nick LIKE '$letra%'

Donde $letra será la letra que le pases al script que haga esta consulta ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 02/06/2003, 09:12
Avatar de Gryphus  
Fecha de Ingreso: febrero-2003
Ubicación: Spain
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
lo he puesto asi pero no va
$letra = D;
$result = mysql_query("SELECT id, nick FROM usuarios like $fecha ORDER BY id DESC LIMIT $reg1, $tampag", $link);

¿que esta mal?
  #6 (permalink)  
Antiguo 02/06/2003, 14:00
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

El juego de las diferecias. ¿En que se parece

SELECT * FROM tabla WHERE nick LIKE '$letra%'

a

SELECT id, nick FROM usuarios like $fecha ORDER BY id DESC LIMIT $reg1, $tampag

Mas bien a poco. Repasa la sintaxis del select en www.mysql.com . Y recuerda que es $letra='D'; con las ' porque sino lo toma como la constante D que no existe.

Y la estructura:
Código PHP:
mysql_query("..",...) or die(mysql_error()); 
Para que el propio MySQL te de el mensaje de error.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.

Última edición por josemi; 02/06/2003 a las 14:03
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 01:42.