Foros del Web » Programando para Internet » PHP »

Ordenar registros

Estas en el tema de Ordenar registros en el foro de PHP en Foros del Web. Hola Estoy intentando ordenar los registros de una tabla por el campo nombre de tal forma que quede algo asi: A registros que empiezan por ...
  #1 (permalink)  
Antiguo 06/03/2004, 03:55
 
Fecha de Ingreso: agosto-2001
Ubicación: Gran Canaria (España)
Mensajes: 430
Antigüedad: 16 años, 4 meses
Puntos: 0
Ordenar registros

Hola

Estoy intentando ordenar los registros de una tabla por el campo nombre de tal forma que quede algo asi:

A
registros que empiezan por A

B
registros que empiezan por B

C
registros que empiezan por C

etc...

por mas que lo intento no hay forma....

la tabla tan solo tiene un campo que es nombre...

Agradeceria una ayudita...

Ciao
  #2 (permalink)  
Antiguo 06/03/2004, 04:32
Avatar de firewind  
Fecha de Ingreso: noviembre-2003
Ubicación: Cabra-Córdoba-Andalucia-España
Mensajes: 62
Antigüedad: 14 años, 1 mes
Puntos: 2
Hola.

Primero deberas usar una sentencia del tipo : select * from tabla order by nombre.

Despues pasa los campos a un array.

Coje el primer elemento del array y ponlo en una variable $cLetra , para usar como comparación.

Recorre todo el array comprobando con con $cLetra, si cambia actualiza $cLetra,e imprime el valor.

Es asi de simple, ahora no tengo mi ordenador a mano, asi que espero esto te pueda orientar, sino dilo y intento hacerte el codigo.

Ademas, alguien dijo por aqui que es mejor dar la idea, que el codigo, ya que nos ayuda a aprender, con lo cual estoy de acuerdo.

Pero lo dicho si necesitas codigo, dinos la estructura de tu tabla y te lo hago en un momento.

Un saludo.
  #3 (permalink)  
Antiguo 06/03/2004, 18:40
 
Fecha de Ingreso: agosto-2001
Ubicación: Gran Canaria (España)
Mensajes: 430
Antigüedad: 16 años, 4 meses
Puntos: 0
Hola gracias por tu respuesta, pero la verdad es que no he entendido mucho de lo que me dices...
  #4 (permalink)  
Antiguo 06/03/2004, 18:50
Avatar de firewind  
Fecha de Ingreso: noviembre-2003
Ubicación: Cabra-Córdoba-Andalucia-España
Mensajes: 62
Antigüedad: 14 años, 1 mes
Puntos: 2
Que quieres que aparezcan como :
A
A...
A...

B
B...
B...

C
C...
C...

Dame la info de tu tabla (nombre y campos)
..
__________________
Mi web personal : http://www.juancarlosromero.com
  #5 (permalink)  
Antiguo 06/03/2004, 18:56
 
Fecha de Ingreso: agosto-2001
Ubicación: Gran Canaria (España)
Mensajes: 430
Antigüedad: 16 años, 4 meses
Puntos: 0
La tabla tan solo tiene un campo que se llama nombre, y realmente lo que quiero es esto:

A
aqui se muestran todos los registros que empiezen por A

B
aqui se muestran todos los registros que empiezen por B

C
aqui se muestran todos los registros que empiezen por C

etc...

por supuesto que se muestren las letras A, B, C etc... y justo debajo los registros...

No se si me he explicado

gracias
  #6 (permalink)  
Antiguo 06/03/2004, 19:12
Avatar de firewind  
Fecha de Ingreso: noviembre-2003
Ubicación: Cabra-Córdoba-Andalucia-España
Mensajes: 62
Antigüedad: 14 años, 1 mes
Puntos: 2
ok, mañana te pongo un post con un script.
son la 2:12 AM y voy a descansar.
__________________
Mi web personal : http://www.juancarlosromero.com
  #7 (permalink)  
Antiguo 06/03/2004, 19:31
Avatar de firewind  
Fecha de Ingreso: noviembre-2003
Ubicación: Cabra-Córdoba-Andalucia-España
Mensajes: 62
Antigüedad: 14 años, 1 mes
Puntos: 2
Bueno, como dice el refran: no dejes para mañana lo que puedas hacer hoy.

<?php

require "conexion.php";

if (!$BD = mysql_connect($bd_hos, $bd_usuario, $bd_password)) die("Se ha producido un error : Fallo en la conexión con el servidor");
if (!mysql_select_db($bd_base, $BD)) die("Se ha producido un error : Fallo en la conexión con la base de datos");

$SQL="select * from fr_mensajes order by TITULO";

$result = mysql_query($SQL,$BD);

$cPalabra = "";
echo("<table width=\"100%\" border=\"0\">");
while ($Reg=mysql_fetch_array($result))
{
if (strtoupper($cPalabra) <> strtoupper(substr($Reg["TITULO"],0,1)))
{
echo("<tr><td>$cPalabra</td></tr>");
}
$cCadena = $Reg["TITULO"];
echo("<tr><td>$cCadena</td></tr>");
$cPalabra = strtoupper(substr($Reg["TITULO"],0,1));
}
echo("</table>");

?>

Espero te sirva.
Un saludo.
__________________
Mi web personal : http://www.juancarlosromero.com
  #8 (permalink)  
Antiguo 07/03/2004, 04:11
 
Fecha de Ingreso: agosto-2001
Ubicación: Gran Canaria (España)
Mensajes: 430
Antigüedad: 16 años, 4 meses
Puntos: 0
OK muchas gracias...

pero estoy mirando el codigo, tan solo un cosa las letras del alfabeto salen despues de las palabras y la ultima letra no sale...

voy a estudiar un poco el codigo...

mil gracias

ciao
  #9 (permalink)  
Antiguo 07/03/2004, 08:28
Avatar de firewind  
Fecha de Ingreso: noviembre-2003
Ubicación: Cabra-Córdoba-Andalucia-España
Mensajes: 62
Antigüedad: 14 años, 1 mes
Puntos: 2
Hola, ha esta arreglado, es que lo probe con una tabla muy grande y no me percate de error (por las altas horas)

Mira este codigo, ya va bien:

<?php

require "conexion.php";

if (!$BD = mysql_connect($bd_hos, $bd_usuario, $bd_password)) die("Se ha producido un error : Fallo en la conexión con el servidor");
if (!mysql_select_db($bd_base, $BD)) die("Se ha producido un error : Fallo en la conexión con la base de datos");

$SQL="select * from fr_mensajes order by TITULO";

$result = mysql_query($SQL,$BD);

$cPalabra = "";
echo("<table width=\"100%\" border=\"0\">");
while ($Reg=mysql_fetch_array($result))
{
$cLetraActual = strtoupper(substr($Reg["TITULO"],0,1));
if (strtoupper($cPalabra) <> $cLetraActual)
{
echo("<tr><td>$cLetraActual</td></tr>");
}
$cCadena = $Reg["TITULO"];
echo("<tr><td>$cCadena</td></tr>");
$cPalabra = strtoupper(substr($Reg["TITULO"],0,1));
}
echo("</table>");

?>

Un saludo.
__________________
Mi web personal : http://www.juancarlosromero.com

Última edición por firewind; 07/03/2004 a las 08:29
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 11:14.