Foros del Web » Programando para Internet » PHP »

campo telefono sin signos

Estas en el tema de campo telefono sin signos en el foro de PHP en Foros del Web. hola gente, necesito hacer lo siguiente: tengo una tabla con varios registros (56.000) la cual tiene un campo llamado teléfono. Este campo esta generalmente ingresado ...
  #1 (permalink)  
Antiguo 21/05/2013, 12:39
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años, 8 meses
Puntos: 1
campo telefono sin signos

hola gente,
necesito hacer lo siguiente:
tengo una tabla con varios registros (56.000) la cual tiene un campo llamado teléfono.
Este campo esta generalmente ingresado de la siguiente manera:

teléfono
45-54534
2-453453
7656-766
143-4333

Cuestión que yo hago una búsqueda sobre la tabla, específicamente sobre ese campo.

Código PHP:
$tel $_POST['telefono'];
echo 
preg_replace('/[^0-9]/','',$tel);

$sql mysql_query("SELECT * from clientes WHERE telefono LIKE '%$tel%'"); 
la variable que ingreso para buscar x telefono me saca todo los caracteres correctamente, el problema es que el campo telefono de la tabla esta ingresado de distintas formas y rara ves coincide con mi criterio de búsqueda.
Como podria hacer para que antes de comparar la variable con el campo de mi tabla, al campo se aplique algo simiar a preg_replace ?

Muchas gracias!!!
__________________
Bye!
  #2 (permalink)  
Antiguo 21/05/2013, 12:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: campo telefono sin signos

Si tu intención es procesar directamente en la consulta la columna, que sería lo ideal, deberías revisar una referencia de SQL.

No hay motivos para que tengas que preguntar en el foro de PHP un asunto que no sea de PHP.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 21/05/2013, 12:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: campo telefono sin signos

Lo siento, paketetrueke, lo moví desde MySQL para no borrarle todo el código pHP, sin el cual el problema es inentendible, pero no lo aclaré.
A nivel de SQL, si lo que tiene es basura, da igual lo que ponga, porque jamás lo encontrará. En ese sentido sólo tiene dos soluciones: o lo revisa desde el PHP, o corrige lo que tiene en base, para lo cual debería posiblemente usar una función almacenada, como un modelo que pusimos en las FAQs de MySQL (ver este link).
Pero de todos modos debería después modificar su formulario para evitar (JavaScript mediante, posiblemente) evitar que vuelvan a meter basura.
Creo que es un problema de solución combinada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 21/05/2013, 12:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: campo telefono sin signos

Vale, tienes toda la razón, normalizar los datos es la mejor solución antes que nada.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 21/05/2013, 13:11
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años, 8 meses
Puntos: 1
Respuesta: campo telefono sin signos

con php no puedo hacerlo?
__________________
Bye!
  #6 (permalink)  
Antiguo 21/05/2013, 13:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: campo telefono sin signos

Si, pero para que la comparación sea efectiva tendrías que extraer todos los registros, normalizar los datos y comparar uno a uno.

Eso sería un tremendo desperdicio de recursos, tu eliges.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 21/05/2013, 13:32
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años, 7 meses
Puntos: 23
Respuesta: campo telefono sin signos

bueno.. en mi analitica creo que si el comun denominador es el "-" lo que tienen puesto, lo que tendrias que hacer es hacer que se quiten de todos los registros con una expresion regular...
realmente en ese concepto no puedo ayudarte mucho porque igual ando iniciando en ese concepto
ya despues que hayas quitado todos los guiones entonces ya darle el formato que desees y asi unificar tu criterio
o mejor aun.. dejar en tus registros SIN formato y al presentarlo en la pantalla darle el formato

bueno ... ese seria mi concepto...
Saludos!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #8 (permalink)  
Antiguo 21/05/2013, 14:11
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años, 8 meses
Puntos: 1
Respuesta: campo telefono sin signos

Hola Halcon,
estuve leyendo sobre expresiones regulares, pero yo quiero evitar modificar los valores de la tabla.
Lo que quiero es que solo lea los números del campo telefono.

si el campo contiene el valor: 123-456
q lo interprete como: 123456
de esa forma si el usuario ingresa para buscar el teléfono: 1234-56, con el ya aplicado "echo preg_replace('/[^0-9]/','',$tel)" queda: 123456 !

se entiende?¿
__________________
Bye!
  #9 (permalink)  
Antiguo 21/05/2013, 14:59
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: campo telefono sin signos

Aquí la clave es regularizar. Si, como sugieren, el problema es el guión, resultará muy fácil quitarlo del campo con una única consulta a la base de datos y luego, mediante programación, evitar que lo vuelvan a introducir (sea con PHP o validando con javascript). Pero no nos dices si hay algo más, si quieres conservar el modo en que se introducen los datos, si hay otros signos como paréntesis o espacios. Todo eso podría quitarse. Yo también soy partidario de resolver el tema así, a medias entre una consulta o varias consultas de actualización a la base de datos y programación con validación o reemplazo de los datos mediante PHP y javascript.
Se podría hacer una consulta en la base (y ya estoy mezclando foros) con un replace al vuelo para quitar algún signo (por ej. el guión), pero eso es poco eficiente, pues perderías, creo, la importante ayuda de los índices.
saludos

Etiquetas: campo, mysql, registros, select, signos, sql, tabla
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 23:29.