Foros del Web » Programando para Internet » PHP »

Mostrar por letra de inicio del nombre

Estas en el tema de Mostrar por letra de inicio del nombre en el foro de PHP en Foros del Web. Hola Si tengo esta consulta "SELECT * FROM fotos ORDER by nombre_foto"; es posible mostrar por abecedario (por ejemplo que me muestre solo las fotos ...
  #1 (permalink)  
Antiguo 22/10/2007, 09:31
 
Fecha de Ingreso: diciembre-2005
Mensajes: 35
Antigüedad: 18 años, 4 meses
Puntos: 0
Mostrar por letra de inicio del nombre

Hola

Si tengo esta consulta

"SELECT * FROM fotos ORDER by nombre_foto";

es posible mostrar por abecedario
(por ejemplo que me muestre solo las fotos cuyo nombre empiezan con a)

O debo hacer consultas para cada letra del abecedario.

Gracias por la ayuda
  #2 (permalink)  
Antiguo 22/10/2007, 09:58
Avatar de Evert  
Fecha de Ingreso: abril-2004
Ubicación: Cochabamba - Bolivia
Mensajes: 94
Antigüedad: 20 años
Puntos: 2
Re: Mostrar por letra de inicio del nombre

Hola

Puedes usar la siguiente consulta

SELECT * FROM fotos WHERE nombre_foto LIKE 'A%'
o en lugar de la letra usar una variable
SELECT * FROM fotos WHERE nombre_foto LIKE '$letra%'

con esta consulta obtendras todos los registros que empiezen con una letra determinada
  #3 (permalink)  
Antiguo 22/10/2007, 11:47
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Re: Mostrar por letra de inicio del nombre

Tambien puede usar la funcion substring (suponiendo que use Mysql, pareciera que ya se da por hecho), pero no estoy seguro si es mas optimo que usar el operador Like http://dev.mysql.com/doc/refman/5.0/...tion_substring
  #4 (permalink)  
Antiguo 22/10/2007, 13:10
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Re: Mostrar por letra de inicio del nombre

Que interesante, resulta que es mas efectivo usar el Like que elSubstring http://blogs.vandamme.com/developmen...er_perf_2.html
o no?
http://www.forbiddenweb.org/topic/8167/index.html
Ya me confundi, que alguien me aclare (uso Postgres)

Última edición por Sergestux; 22/10/2007 a las 13:36
  #5 (permalink)  
Antiguo 22/10/2007, 13:22
 
Fecha de Ingreso: diciembre-2005
Mensajes: 35
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Mostrar por letra de inicio del nombre

Gracias por las respuestas

Voy a probar usando una variable.
Quiero ver si puedo evitar hacer una consulta para cada letra del abecedario.

A ver que me resulta
  #6 (permalink)  
Antiguo 22/10/2007, 13:41
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: Mostrar por letra de inicio del nombre

Cita:
Iniciado por Sergestux
Que interesante, resulta que es mas efectivo usar el Like que elSubstring http://blogs.vandamme.com/developmen...er_perf_2.html
Esto pasa porque SELECT dato FROM tabla WHERE SUBSTRING(dato,1,1) es esto:

1.- abre tabla
2.- hace el where (lo que hace es buscar segmentadamente en todos los registros)
3.- muestra dato

En cambio SELECT dato FROM tabla WHERE dato LIKE 'a%'

1.- abre tabla
2.- hace el where (busca en todos los registros segun la regla a% por lo tanto la validacion del dato es "verdadero o falso" y no pasa a verificar la cadena en el registro completo)
3.- muestra dato

Si haces un LIKE '%a%' y todos los registros tienen una a y haces un substring de una letra... deberia demorarse practicamente un poco menos el like por el hecho de que la busqueda va a retornar todos los registros PERO se mantiene la regla de verdadero y falso y no sigue buscando la cadena en el registro.

No se si se entendio pero lo agrego como dato para el que lo necesite xD

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #7 (permalink)  
Antiguo 16/01/2008, 21:12
 
Fecha de Ingreso: febrero-2007
Ubicación: Panamá
Mensajes: 50
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: Mostrar por letra de inicio del nombre

Bueno, no se si sea prudente que vuelva a hacer una pregunta en este tema que ha permanecido tanto tiempo cerrado.... pero creo q es el mejor lugar, para evitar escribir TODO el problema....

Mi pregunta es: todo bien para hacer q la pagina me muestre los resultados por cada letra, pero como puedo hacer q me muestre aquellos resultados que no comience con una letra? por ejemplo..... si quiero mostrar los usuarios ingresados en una pagina por orden alfabetico, a la hora de hacer la consulta, q debo poner en WHERE usuario_nombre LIKE '%????'

Gracias y saludo de antemano!
  #8 (permalink)  
Antiguo 17/01/2008, 18:49
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Re: Mostrar por letra de inicio del nombre

Código PHP:
 SELECT FROM fotos WHERE nombre_foto NOT LIKE 'A%' 
Para sacar todos las fotos menos las que comienzan con A
  #9 (permalink)  
Antiguo 18/01/2008, 23:00
 
Fecha de Ingreso: febrero-2007
Ubicación: Panamá
Mensajes: 50
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: Mostrar por letra de inicio del nombre

si, ya habia pensado en eso, pero mi problema es q de esta manera mostrare todos los resultados que no empiezan con la primera letra y si tengo los contactos separados por su primera letra, akellos q no comiencen con letras, como los tomo? haciendo un foreach del abecedario para q revise cada resultado con el NOT LIKE
  #10 (permalink)  
Antiguo 21/01/2008, 11:54
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Pregunta Re: Mostrar por letra de inicio del nombre

Cita:
Iniciado por demogar Ver Mensaje
Mi pregunta es: todo bien para hacer q la pagina me muestre los resultados por cada letra, pero como puedo hacer q me muestre aquellos resultados que no comience con una letra?
Me confundio eso que escribiste

Para esto:
Cita:
Iniciado por demogar Ver Mensaje
por ejemplo..... si quiero mostrar los usuarios ingresados en una pagina por orden alfabetico
No te bastaria con un ORDER BY?
A tu ultima duda si no le entendi, quizas si la explicas de otra manera
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:34.