Foros del Web » Programando para Internet » PHP »

Paginador Alfabetico

Estas en el tema de Paginador Alfabetico en el foro de PHP en Foros del Web. Hola... He probado el paginador de Webstudio, y es bastante bueno, pero como puedo paginar los resultador por abecedario, es decir que en vez que ...
  #1 (permalink)  
Antiguo 09/12/2004, 09:51
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 19 años, 5 meses
Puntos: 0
Pregunta Paginador Alfabetico

Hola...

He probado el paginador de Webstudio, y es bastante bueno, pero como puedo paginar los resultador por abecedario, es decir que en vez que me salgan los numeros de las paginas salgan las letras del abecedario???

Gracias por su ayuda!!!
  #2 (permalink)  
Antiguo 09/12/2004, 09:57
 
Fecha de Ingreso: septiembre-2004
Ubicación: Viviendo en Manresa(Barcelona)
Mensajes: 230
Antigüedad: 19 años, 6 meses
Puntos: 0
Pues poniendo la opcion ORDER BY campo en el SELECT y ese campo que se alfabetico, es decir, que contenga letras para que las ordene alfabeticamente(un campo VARCHAR por ejemplo).
  #3 (permalink)  
Antiguo 09/12/2004, 10:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Forma tus links del abecedario:

Código PHP:
foreach (range('a''z') as $letra) {
   echo 
"<a href=\"resultado.php?letra=$letra\">$letra</a> ";

(creo que la "ñ" no saldrá ahí .. si es así tendrás que usar un array con tus letras en lugar de usar range())

Tu resultado.php

Tendrá que hacer mínimo una consulta SQL tipo:
Código PHP:
$sql="SELECT * FROM tabla WHERE campo LIKE '".$_GET['letra']."%'"
Con eso filtraras tus registros por la inicial de ese "campo" que indiques ahí .. A su vez puedes aplicar "Paginator" para paginar los posibles resultados de cada letra en sus páginas que resulten .. Pero, partiendo de que ya estás filtrando por "letra".

Un saludo,
  #4 (permalink)  
Antiguo 09/12/2004, 11:57
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 19 años, 5 meses
Puntos: 0
...Lo estoy haciendo con Paginator y hay una parte en la que yo le doy la consulta SQL ( if(!$rs->query("SELECT * FROM clientes ORDER BY nombre_empresa")) ), y esto ordena los resultados alfabeticamente, pero no muestra en los links de paginacion las letras, solo numeros de paginas.

Tambien en la clase esta esta funcion function nroPaginas()
{
for($i = 1; $i <= $this->totalPaginas() ; $i++)
{
$temp[$i] = "<a href=\"?pagina=$i".$this->propagar()."\">$i</a>";
} // for
$temp[$this->pagina()] = "<b>".$this->pagina()."</b>";
return implode(" | ", $temp);
} // function

que creo debo modificarla para que muestre letras en vez de numeros?????
  #5 (permalink)  
Antiguo 09/12/2004, 13: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 te fijas en la consulta SQL que te propongo que deberías usar .. no tiene nada que ver con "Limitar" registros que es lo que en el fondo hace tu classe de paginado o paginadores en general de ese tipo.

Debes primero -antes- de atacar a tu sistema de paginado por "n°" que ya usas .. filtrar lo que le vas a entregar por "registros que el campo tal comiencen por tal letra". Luego -opcionalmente- si lo deseas a su vez paginas por n° tambien . .pero siempre n° y letra (de hecho en las variables que pueda propagar tu classe de paginado tendrías que añadir la de "letra" que usa el ejemplo que te puse más arriba.).

Un saludo,
  #6 (permalink)  
Antiguo 09/12/2004, 13:25
Avatar de baklao  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Ana - Isla de Margarita
Mensajes: 482
Antigüedad: 19 años, 4 meses
Puntos: 0
Hola a todos del Foro.

Jgarcigo donde puedo conseguir el paginador de Webstudio para utilizarlo. claro si el amigo Webstudio lo permite?.

Muchas Gracias de Antemano.

Salu2.
__________________
Atte. Mohamed :aplauso:
  #7 (permalink)  
Antiguo 09/12/2004, 14:44
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 19 años, 5 meses
Puntos: 0
El paginador gracias a jpinedo esta en http://jpinedo.webcindario.com/scrip...descargas.html
  #8 (permalink)  
Antiguo 09/12/2004, 14:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero .. jgarcigo .. tu usas el de "webstudio" y ese es el que te pide el link el amigo baklao ...

En la Web de jpinedo en su sección de "enlaces" lo tienes . también en el foro si buscas por Webstudio y paginacion ...

Un saludo,
  #9 (permalink)  
Antiguo 09/12/2004, 15:13
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 19 años, 5 meses
Puntos: 0
Tienes razon este es el link, pero lo que no recuerdo es de donde descargue el codigo de la clase, pero lo estoy averiguando, mientras aqui esta el link de la documentacion http://www.web-studio.com.ar/proyect...umentacion.htm
  #10 (permalink)  
Antiguo 09/12/2004, 18:35
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Clase Paginado de Webstudio:
Documentación
http://www.web-studio.com.ar/proyect...umentacion.htm
Código Fuente
http://www.web-studio.com.ar/proyect....paginado.phps

Y jgarcigo:
La verdad yo tampoco entiendo... dices que utilizas Paginator pero pones un código de la clase Paginado... además pones el enlace a la web de Paginator... ojo, que los dos, aunque hacen prácticamente lo mismo se utilizan de manera muy diferente. Uno es un script para incluir y el otro es una clase.

Saludos

Última edición por jpinedo; 09/12/2004 a las 18:42
  #11 (permalink)  
Antiguo 09/12/2004, 23:01
Avatar de baklao  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Ana - Isla de Margarita
Mensajes: 482
Antigüedad: 19 años, 4 meses
Puntos: 0
Gracias a todos por la direccion

Salu2.
__________________
Atte. Mohamed :aplauso:
  #12 (permalink)  
Antiguo 10/12/2004, 06:26
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 19 años, 5 meses
Puntos: 0
Hola...

Jpinedo tienes alguna idea de como modificar ese paginador (webstudio) para que sea alfabetico???
  #13 (permalink)  
Antiguo 10/12/2004, 06:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
jgarcigo

Has probado lo que no me cansaré de repetir en este mensaje .. a generar tus links alfabéticamente y a ejecutar la consulta SQL que más arriba te comenté?...

No confundas un script que limita unos resultados de una consulta SQL del total que dá para separarlo en grupos de N registros (por página) a uno que -además- tenga que filtrar por tal coincidencia .. en tu caso que tal campo comience por tal letra.

Un saludo,
  #14 (permalink)  
Antiguo 10/12/2004, 15:35
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
jgarcigo:
También me gustaría que respondas a lo que puso Cluster porque parece que lo estuvieras ignorando por completo... es gracioso, pero es justamente el único que te está dando la solución...

Estás empecinado en utilizar un paginador y te has cerrado en eso...
Te voy a aclarar un poco el asunto.

Un paginador (como Paginator o la clase Paginado) hace lo siguiente a partir de una consulta sql:
- Cuenta el total de registros que devuelve la consulta.
- Calcula el número de páginas que se generarán.
- Modifica la consulta sql añadiendo la cláusula LIMIT.
- Genera los enlaces de paginación para navegar por las paginas.

Si te das cuenta, lo que tú necesitas es TOTALMENTE DIFERENTE a lo que hacen los paginadores mencionados.

Lo tuyo es incluso más sencillo... pero olvídate de lo que estás haciendo y prueba lo que Cluster te recomienda.

Saludos
  #15 (permalink)  
Antiguo 13/12/2004, 05:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Como comenta jpinedo . .esa es la filosofía de trabajo de un "paginador" común .. ahora .. si tu quieres "paginar" .. mejor dicho .. "mostrar" tus registros alfabéticamente y sólo los que comienzan por tal letra tal campo .. usa el código que más arriba mencioné.

Como ya he dicho anteriormente .. -a su vez- puedes "paginar" de la forma "clásica" los resultados que te dé una consulta SQL del tipo condicional que te mostré por si tienes que ofrecer X registros de tal "letra" (inicial) por página.

Un saludo,
  #16 (permalink)  
Antiguo 13/12/2004, 08:10
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 19 años, 5 meses
Puntos: 0
Cluster...
He estado haciendo lo que me comentaste sobre las sentencia SQL $sql="SELECT * FROM tabla WHERE campo LIKE '".$_GET['letra']."%'"; , y tambien propagando la variable letra con el metodo $rs->propagar("letra"); , pero no he podido hacer que letra tome un valor, ya que en la URL muestra solo esto listar_productos.php?pagina=1&letra=, no tomando ningun valor ¿¿¿por que???.

Bueno... Y con respecto al comentario de Jpinedo de que estoy ignorando a Cluster, no es asi, lo que sucede es que estoy un poco colgado (mas bien MUY COLGADO) con la clase de paginacion, pero hasta el momento estoy cachando que tengo que propagar la letra y parece que tambien modificar el metodo nroPaginas() de esta clase.

Otra cosa es ¿Que sucede si en vez de un numero de pagina le pongo una letra de pagina?, es decir listar_productos.php?pagina=H.

Bueno me despido hasta la proxima y muchas gracias a todos !!!
  #17 (permalink)  
Antiguo 13/12/2004, 08:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Te recomiendo que empieces con el tema de listar tus registros por letras ... luego incrustra el código de paginado.

Cita:
Otra cosa es ¿Que sucede si en vez de un numero de pagina le pongo una letra de pagina?, es decir listar_productos.php?pagina=H.
Deberías ver el código de la classe de paginado que usas .. sobre todo el SQL que se gestiona ahí .. Jpinedo ya te hizo un resumen .. se usa la sentencia LIMIT de SQL y eso es para "limitar" numeros de registros desde un registro de inicio hasta un desplazamiento. Por ende .. eso de poner "pagina=H" no ocasionará mas que un error o será interpretado como "0" ...

El tema del por qué no se propaga tu variable .. no te lo puedo resolver pues no uso dicha classe pero .. lee su documentación y fijate bien como debes indicar tus variables a propagar.



Un saludo,
  #18 (permalink)  
Antiguo 13/12/2004, 08:43
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 19 años, 5 meses
Puntos: 0
Este es el codigo que genera los links

Código:
 function nroPaginas()
 {
  for($i = 1; $i <= $this->totalPaginas() ; $i++)
  {
   $temp[$i] = "<a href=\"?pagina=$i".$this->propagar()."\">$i</a>";
  } // for
  $temp[$this->pagina()] = "<b>".$this->pagina()."</b>";
  return implode(" | ", $temp);
 } // function
, supongo que en esta funcion deberia ir el codigo que me dijiste para las letras, pero no cacho como
  #19 (permalink)  
Antiguo 13/12/2004, 08:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No, ...

Según la propuesta que a lo largo de este tema estoy tratando de comunicarte es que vas a tener dos cosas:

A B C D F G ... --> links para acceder a los registros de tal campo que comienze por tal inicial

Y a su vez .. para la letra X seleccionada tendrás un paginado de sus posibles resultados de forma numérica!

1 | 2 | 3 | ....

Si cambias de "letra" .. el paginado se recompone .. tal vez no tengas más que una página para tal letra .. o tengas várias .. pero el paginado será para cada letra .. no "total". Por eso .. la sentencia SQL que debes "alimentar" a tu classe de paginado será la que te propongo con el "LIKE" ...

Yo no sé si es eso lo que quieres o qué .. pero es así como deberías usarlo o simplemente te olvidas de la classe de paginado y que los resultados por "letra" que se arrojen sean los que sean en una sóla página.

El método: propagar() ya te he comentado que no sé como se usa (por qué no me he leido la documentación de dicha classe) pero .. es cosa de que tú lo leas.

Un saludo,
  #20 (permalink)  
Antiguo 13/12/2004, 09:02
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 19 años, 5 meses
Puntos: 0
Es eso exactamente lo que quiero hacer, pero que al ir al link "A", me muestre una pagina con todos los resultados que comienzan por "A", y no crear otra paginacion solamente para la letra "A".
...Creo que se entiende

Gracias !!!
  #21 (permalink)  
Antiguo 13/12/2004, 14:27
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 simplemente -olvidate- de la classe de paginado que usas .. (te estás complicando tu mismo). Usa el código que te mostré hace unos cuantos mensajes más arriba!.

Un saludo,
  #22 (permalink)  
Antiguo 14/12/2004, 07:51
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 19 años, 5 meses
Puntos: 0
JEJEJEJEJE !!!!.....
Me rio solo solo solo JAJAJAJA!!!, lo que decias Cluster era realmente cierto!!!, me estaba ahogando en un charco de agua, el famoso paginador alfabetico no era mas que una sola pagina, sin clases ni nada por el estilo, aqui el codigo
Código:
<?
include('cnn/conexion.php');

$sql = "SELECT * FROM clientes WHERE nombre_empresa LIKE '".$_GET['letra']."%'"; 
$rs = mysql_query($sql);

echo '<table>';
for ($i = 0; $i < mysql_num_rows($rs); $i++) {
	echo '<tr><td>'.mysql_result($rs, $i, "nombre_empresa").'</td>';
}
echo '</tr></table>';


$abecedario = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ";

for ($i=0; $i < strlen($abecedario); $i++) { 
   echo "|<a href=\"paginado_alfabetico.php?letra=$abecedario[$i]\"> $abecedario[$i] </a>|"; 
}
?>
...Por si le sirve a alguien que este en busca de algo parecido, lo que falta es agregar los links siguiente y anterior, y bueno, porsupuesto optimizar el codigo.

Una vez mas muchissimass gracias a todos y un cordial saludo !!!
  #23 (permalink)  
Antiguo 15/12/2004, 14:55
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
ok

Cita:
Iniciado por Cluster
Forma tus links del abecedario:

Código PHP:
foreach (range('a''z') as $letra) {
   echo 
"<a href=\"resultado.php?letra=$letra\">$letra</a> ";

(creo que la "ñ" no saldrá ahí .. si es así tendrás que usar un array con tus letras en lugar de usar range())

Tu resultado.php

Tendrá que hacer mínimo una consulta SQL tipo:
Código PHP:
$sql="SELECT * FROM tabla WHERE campo LIKE '".$_GET['letra']."%'"
Con eso filtraras tus registros por la inicial de ese "campo" que indiques ahí .. A su vez puedes aplicar "Paginator" para paginar los posibles resultados de cada letra en sus páginas que resulten .. Pero, partiendo de que ya estás filtrando por "letra".

Un saludo,

Para que salga la letra Ñ, te tocaría hacer lo siguiente:

Código PHP:
<table width="100%"  border="0" align="center" cellpadding="4" cellspacing="0" class="tableInformacionSubtitle" id="abc">
<tr>
<?
//defines la matriz con el abcedario
$matriz = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","Ñ","O","P","Q","R","S","T","U","V","W","X","Y","Z");

foreach (
$matriz as $letra) {
echo 
"<td align=\"center\"><a href=\"query.php?letra=$letra\">$letra</a></td>";

?>    
</tr>
</table>
Luego ya en tu consulta SQL te traes el valor de la variable $letra

Código PHP:


$sql 
"SELECT * FROM clientes WHERE nombre_empresa LIKE '".$_GET['letra']."%'"
__________________
Un Saludo, Andinistas.
"Llegaron... Ellos tenían la biblia y nosotros la tierra... y nos dijieron: 'Cierren los ojos y recen.' Cerramos los ojos y cuando los abrimos,
ellos tenían la tierra y nosotros la biblia." Abadío Green.
  #24 (permalink)  
Antiguo 15/12/2004, 15:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Gracias andinista..

Nuestro amigo ya lo resolvió de otra forma el tema de generar el abecedario con la "ñ" para los links:

Código PHP:
$abecedario "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ";

for (
$i=0$i strlen($abecedario); $i++) { 
   echo 
"|<a href=\"paginado_alfabetico.php?letra=$abecedario[$i]\"> $abecedario[$i] </a>|"

Un saludo,
  #25 (permalink)  
Antiguo 28/05/2006, 10:12
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 6 meses
Puntos: 0
Hola buenas,

Partiendo de este código ¿cómo podría crear una clasifiación numérica -del 0 al 9-. Y que también, de paso, mostrara nombres que se inicien con caracteres especiales como "!", "?", "#", "@", etc.

Gracias amigos :D


Cita:
Iniciado por Cluster
Forma tus links del abecedario:

Código PHP:
foreach (range('a''z') as $letra) {
   echo 
"<a href=\"resultado.php?letra=$letra\">$letra</a> ";

(creo que la "ñ" no saldrá ahí .. si es así tendrás que usar un array con tus letras en lugar de usar range())

Tu resultado.php

Tendrá que hacer mínimo una consulta SQL tipo:
Código PHP:
$sql="SELECT * FROM tabla WHERE campo LIKE '".$_GET['letra']."%'"
Con eso filtraras tus registros por la inicial de ese "campo" que indiques ahí .. A su vez puedes aplicar "Paginator" para paginar los posibles resultados de cada letra en sus páginas que resulten .. Pero, partiendo de que ya estás filtrando por "letra".

Un saludo,
  #26 (permalink)  
Antiguo 29/05/2006, 06:32
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 6 meses
Puntos: 0
Lo terminé encontrando:

Código PHP:
foreach (range('0''z') as $letra) { 
   echo 
"<a href=\"resultado.php?letra=$letra\">$letra</a> "

  #27 (permalink)  
Antiguo 23/11/2007, 12:40
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 18 años, 6 meses
Puntos: 2
Re: Paginador Alfabetico

muy bueno lo uso con el paginator de jpinedo y anda a la perfeccion, gracias por el codigo cluster

gracias
__________________
DJJJ
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 23:28.