Foros del Web » Programando para Internet » PHP »

Orden No-alfabetico :)

Estas en el tema de Orden No-alfabetico :) en el foro de PHP en Foros del Web. Buenas, tengo una dudilla; Para extraer de una base de datos una lista por orden alfabetico, utilizo la siguiente sentencia: Código PHP: SELECT  *  FROM tabla WHERE nombre LIKE  ...
  #1 (permalink)  
Antiguo 25/01/2005, 18:21
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 13 años, 10 meses
Puntos: 0
Orden No-alfabetico :)

Buenas, tengo una dudilla; Para extraer de una base de datos una lista por orden alfabetico, utilizo la siguiente sentencia:
Código PHP:
SELECT FROM tabla WHERE nombre LIKE '$letra%' 
Ahora bien, como haría para sacar una lista de todo aquello que no fuera de la A a la Z??

SALUDOS
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #2 (permalink)  
Antiguo 25/01/2005, 18:34
Avatar de shinblood  
Fecha de Ingreso: diciembre-2003
Ubicación: lima
Mensajes: 214
Antigüedad: 14 años
Puntos: 1
no se entiende
cuando dices:
Ahora bien, como haría para sacar una lista de todo aquello que no fuera de la A a la Z??
__________________
saludos :adios:
  #3 (permalink)  
Antiguo 25/01/2005, 18:40
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 13 años, 10 meses
Puntos: 0
Si, me refiero, si hay datos en mi base de datos que contienen nombres como:

45pepe
!!juan!!
||Yo||
etc...

me explico?? GRACIAS!!
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #4 (permalink)  
Antiguo 25/01/2005, 22:01
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
Con expresiones regulares podrías hacerlo fácilmente, seleccionando los criterios que tú deseas para sacar la info.

Parece un poco latoso aprender expresiones regulares, pero una vez que les das un vistazo, se convierten en los amos del procesamiento de texto, consultas, etc.
  #5 (permalink)  
Antiguo 26/01/2005, 05:14
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 13 años, 10 meses
Puntos: 0
Gracias, lo he conseguido mediante esta sentencia:
SELECT * FROM tabla WHERE nombre NOT REGEXP "^[a-z]"

Habría alguna posibilidad de poder ordenar alfabeticamente estos nombre por la P?

{{Pablo}}
|Pepe|
666Pedro

etc...

Se entiende no?? que omita las expresiones regulares y numeros o es muy complicado???

SALUDOS Y GRACIAS OTRA VEZ
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #6 (permalink)  
Antiguo 26/01/2005, 09:52
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
Sonrisa En PHP no es difícil

No sé si puedas sacar directamente el contenido como tú lo quieres con las funciones de base de datos.

Sin embargo, si primero metes a un array de PHP todos tus valores que yo llamo "logins", puedes ordenarlos como tú lo buscas mediante un código como este:

Código PHP:
<?php

//metes en un array todos esos tus logins
$ejemplo=array("++","!carmelo","amigo","[[baston]]","{{daniel}¿","48293","{}{Juan}");

//para cada uno de tus logins, realiza lo siguiente
for($i=0;$i<count($ejemplo);$i++)
 {
  
//extrae las letras en $arr[1]
  
$status=eregi("([a-z]+)",$ejemplo[$i],$arr);

  
//agregamos un nuevo valor. Nota que si no contienen letras, entonces
  //deja el valor que tenía normalmente. Si contiene letras, lo ordena por
  //letras. Lo convierto a Mayúsculas para que la función SORT haga bien su
  //trabajo.
  
$nuevo_array[$i]=$status?strtoupper($arr[1]):$ejemplo[$i];
 }

//ordena tu array
sort($nuevo_array);

//muestra tu array
for($i=0;$i<count($nuevo_array);$i++)
  echo 
"<br>$nuevo_array[$i]";
?>
El código listado arriba, imprimirá en pantalla lo siguiente:
Código:
++
48293
AMIGO
BASTON
CARMELO
DANIEL
JUAN
Ese problema que planteas me gustó muchísimo, seguro que en alguna ocasión utilizaré algo así. Pasé un rato agradable resolviéndolo.
  #7 (permalink)  
Antiguo 26/01/2005, 10:01
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
uppsss, se me olvidó la pregunta principal, jaja.

Jaja, olvidé la pregunta principal.

Lo que tú quieres es ordenar los logins. Entonces nada más hay que hacer dos modificaciones al código, quedaría así:

Código PHP:
<?php

//metes en un array todos esos tus logins
$ejemplo=array("++","!carmelo","amigo","[[baston]]","{{daniel}¿","48293","{}{Juan}");

for(
$i=0;$i<count($ejemplo);$i++)
 {
  
//extrae las letras en $arr[1]
  
$status=eregi("([a-z]+)",$ejemplo[$i],$arr);
  
//agregamos un nuevo valor. Nota que si no contienen letras, entonces
  //deja el valor que tenía normalmente. Si contiene letras, lo ordena por
  //letras. Lo convierto a Mayúsculas para que la función SORT haga bien su
  //trabajo.
  
$nuevo_array[$status?strtoupper($arr[1]):$ejemplo[$i]]=$ejemplo[$i];
 }

//ordena tu array
ksort($nuevo_array);

//muestra tu array
foreach($nuevo_array as $k=>$v)
  echo 
"<br>$v";
?>
E imprimiría una lista como la siguiente:
Código:
++
amigo
[[baston]]
!carmelo
{{daniel}¿
{}{Juan}
48293
Ahora sí, ya está, jeje. =)
  #8 (permalink)  
Antiguo 26/01/2005, 11:15
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 13 años, 10 meses
Puntos: 0
¡¡¡SENCILLAMENTE GENIAL!!!

Muchisimas gracias voy a probarlo !!!!
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
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:36.