Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] problema para consultar claves similares

Estas en el tema de problema para consultar claves similares en el foro de PHP en Foros del Web. Buenas! Explico, tengo un problema que no encuentro como solucionarlo, aunque ya estuve haciendo experimentos en la combinacion de ajustes en las consultas para los ...
  #1 (permalink)  
Antiguo 01/07/2013, 11:29
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Pregunta problema para consultar claves similares

Buenas!

Explico, tengo un problema que no encuentro como solucionarlo, aunque ya estuve haciendo experimentos en la combinacion de ajustes en las consultas para los listado.
tengo una base de datos que registra a un club cada uno tiene una clave que se genera de acuerdo al equipo y estado, todo bien pero ahora tengo el detalle que cuanto hago la consulta para determinado equipo el que tiene numero similar tambien me los presenta en el listado
Ejemplo

Equipo 2 DEPG2ABCD43
Equipo 23 DEPG23EFGH67
Equipo 27 DEPG27IJKL120

se supone que al listar selecciono asi:
Código PHP:
<?php
$buscador
=$_SESSION['login']; //Esto es quien solicita y se supone que solo puede ver a su equipo
$bar1 preg_replace "/^([a-z]+)G(\d+)([a-z]+)(\d+)$/i"'$1'$buscador); $bar=preg_replace "/^([a-z]+)G(\d+)([a-z]+)(\d+)$/i"'$2'$buscador);
$bar3 $bar1."G".$bar;
?>
en la consulta de la base hago esto:
Código PHP:
$query mysql_query("SELECT * FROM archivo WHERE rug LIKE '$bar3%' ORDER BY nombre, seccion"); 
cabe aclarar que ya intente poniendo ==
Tambien cambiando a
Código PHP:
$bar1 substr($buscador04);  $bar3 $bar1.$bar
y no logro hacer que no se listen los miembros de los otros equipos

cabe aclarar que eso pasa con el equipo menor osea con el equipo 2 o con equipo 1 obvio que el equipo uno con todos los equipos que tienen 1 como el 10,11,12,etc...

haber si alguien me puede orientar para solucionar el problema... de antemano Gracias!!

Saludos!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #2 (permalink)  
Antiguo 01/07/2013, 11:33
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: problema para consultar claves similares

Holas, HalconVigia.

Prueba reemplazando el uso del LIKE en tu consulta SQL, por un simple igual, o en general, quitando el signo porcentaje, que es el que se usa para obtener registros similares (búsqueda no exacta), a ver si así te da lo que necesitas:

Código PHP:
$query mysql_query("SELECT * FROM archivo WHERE rug = '".$bar3."' ORDER BY nombre, seccion"); 
Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 01/07/2013, 11:48
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: problema para consultar claves similares

Buenas!

Gracias por responder pero otro detalle es que como puse requiero listar todos los que pertenezcan al mismo grupo pero no todos tienen la misma terminacion

en el grupo 2 pueden haber 10 o 20 miembros que sus terminaciones son diferentes y solo tienen en comun 5 o 6 letras de inicio
¿y porque 5 o 6? porque si son de un grupo de un solo digito son 5 caracteres DEPG2 y si son de dos digitos son 6 DEPG29
y en cada equipo despues de eso en comun de todos los integrantes de cada equipo siguen sus iniciales y el numero de control que tambien va de 1 a 999
si le quito el LIKE que por cierto ya hice no me lista a ninguno porque no coinciden por las terminaciones que todas son diferentes, y asi esta pensado que ninguna se repita

Saludos!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #4 (permalink)  
Antiguo 01/07/2013, 11:59
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: problema para consultar claves similares

La verdad es que la lógica del armado de la clave me pierde, sorry ^^U ¿Podrías dar más ejemplos prácticos? Ya que en tu primer post decías querer sólo 1 registro, y ahora dices que quieres obtener todos los de un mismo grupo...
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #5 (permalink)  
Antiguo 01/07/2013, 12:08
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: problema para consultar claves similares

Uf, vaya estructura de base de datos.
Ok, ya que lo tienes asi...Primero, haces preg_replace de la misma expresion regular, sobre la misma cadena, y lo guardas en 2 variables distintas..No lo entiendo.
De hecho, lo que hay en $bar3 deberia ser lo mismo a ambos lados de la "G".Deberías imprimir la query para ver qué estás mandando en el select.
Después, no necesitas hacer un LIKE en el select.Debes hacer un substr.A priori, sabes dónde debe aparecer la cadena, y qué longitud debe tener.
  #6 (permalink)  
Antiguo 01/07/2013, 12:23
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: problema para consultar claves similares

Buenas!

haber creo que me explique mal... Todos los miembros tienen el mismo formato de clave que es asi: ABCG123ABCD123
colonia ABC
Grupo G
Numero de Grupo 123 (que va de 1 a 999)
Iniciales de la persona ABCD (ej. Adrian Benito Casita Dorada)
Numero dentro del equipo 123 (que va de 1 a 999)

ahora .. como organizador quiero ver a los miembros del equipo 1 o 2, mi problema esta cuando son equipos que tienen el mismo inicio, entonces me aparecen tambien miembros de todos los equipos similares ej. 24, 13,29,17,etc...

cuando son equipos con diferente inicio o de dos o tres digitos no tengo problema, ej. 3, 11 o 25 se me listan todos sin problema y no se cuela nadien que no pertenece..

mi problema radica en que todas las terminaciones de los integrantes del equipo son diferentes despues del numero de equipo

tengo la idea pero no se como plasmarlo en la instruccion, porque la cosa seria como decirle que compare que exactamente el mismo numero de grupo...

Espero haberme explicado mejor...
Gracias!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #7 (permalink)  
Antiguo 01/07/2013, 12:33
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: problema para consultar claves similares

dashtrash:

el resumen es que al tener el mismo inicio de numero de equipo me aparecen todos, es logico por el like y el $bar3%

ahora lo que necesito es cambiarlo pero no se ¿con que?

lo tengo dividido porque con este mismo script se hacen varias condiciones entonces entra en juego que sean de otra colonia o otro numero de equipo
las colonias pueden ser CAS, DEP, VIS, EXT, RAN, etc... y los equipos como ya dije de 1 a 999
entonces con un select en el formulario de consulta selecciono lo que deseo visualizar y listo... funciona todo bien mi problema solo radica en la similidad de inicio de los equipos...

ahora me mencionas
Cita:
Debes hacer un substr.A priori,
me podrias explicar o darme alguna referencia para documentarme?

de nuevo gracias a todos!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #8 (permalink)  
Antiguo 01/07/2013, 16:20
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: problema para consultar claves similares

Gracias por al explicación, HalconVigia.

A primeras, lo que se me ocurre (y creo no ser la única) que sería ideal que pudieras modificar un poco la codificación esta que usas. La verdad, no sería grande el cambio, sino ordenar un poco el cuento. Mi sugerencia, por ejemplo, sería que llenaras con ceros cuando el número es menor a 100. Por ejemplo:

Si tienes ABCG123ABCD123 , queda igual, ya que son números mayores a 100.
Pero si tienes ahora ABCG12ABCD123 , podrías cambiarlo a ABCG012ABCD123 .

Si no puedes modificar la codificación a estas alturas, mi segunda sugerencia es que agregues campos a tu tabla, de modo que puedas almacenar cada uno de esos datos por separado. Por ejemplo:
Código:
clave        colonia grupo numero
------------- ------- ----- ------
ABCG12ABCD123 ABC    12    123
Esto te lo sugiero porque agregar campos a una tabla no es invasivo, y de paso te soluciona el tema de una, ya que haces las consultas limpiamente filtrando por las columnas pertinentes.

Ahora, si no puedes hacer ni la primera ni la segunda sugerencia, pues tendrías que hacer un select ambiguo como el que haces ahora, y luego en php, recorrer cada resultado y descartar los que no necesitas, para mostrar sólo los que sí cumplen con la condición original.

Suerte y saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #9 (permalink)  
Antiguo 02/07/2013, 00:04
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: problema para consultar claves similares

Buenas!!

Gracias a todos por responder, que aunque no se pudo hacer mas simplificado al final logre el proposito, en la obtencion de los resultados deseados
tal vez complincando de mas pero en tanto logre encontrar una mejor forma me sirve.

para datos si a alguien le pueda servir:
1.- deje la consulta query como estaba originalmente y simplemente en php agregue la comparacion del grupo solicitado con la extraccion mediante expresion regular del grupo en la clave almacenada en la base de datos.
2.- en donde fue necesario solamente lo agregue como condicion comparando las variables.

Quinqui: Gracias por tus comentarios y fijate que voy a tomar en cuenta todos tus comentarios, desgraciadamente no yo realize este proyecto originalmente y asi estaba, y son muchos registros como para ir modificandolos uno por uno sacando las partes, ademas que tiene muchos archivos (mas de 950 scripts) en donde se maneja como fue realizado y cambiar la estructura es muy complejo por el momento pero voy a plantear una "modernizacion" en donde ya pueda optimizar ese concepto.

De nuevo Gracias a Todos y doy por solucionado el Tema!!

Saludos!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!

Etiquetas: claves, consultar, mysql, select, similares
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 14:22.