Foros del Web » Programando para Internet » Javascript »

problema con el caracter ' de programacion

Estas en el tema de problema con el caracter ' de programacion en el foro de Javascript en Foros del Web. Buenas amigos del foro, El problema que tengo es el siguiente. Tengo un input text en el que al introducir caracteres realiza una busqueda en ...
  #1 (permalink)  
Antiguo 31/10/2008, 09:07
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
problema con el caracter ' de programacion

Buenas amigos del foro,

El problema que tengo es el siguiente.

Tengo un input text en el que al introducir caracteres realiza una busqueda en una BD. Todo funciona bien pero por ejemplo si en el text introduzco ' claro esta la consulta a la base de datos da error.

p.e. introduciendo L'HOSPITALET

el programa genera SELECT * FROM tabla WHERE campo= 'L'HOSPITALET'

La cosa es que pense en que por medio de js podía sustituir el caracter ' por ´ quedando en el ejemplo anterior L´HOSPITALET y ya la consulta funcionaría. Esto lo tendré que hacer tanto en el formulario de inserción como en el de busqueda.

Entonces hice la siguiente función

Código javascript:
Ver original
  1. function detectkey(evt,obj) {
  2. keycode = (evt.keyCode==0) ? evt.which : evt.keyCode;
  3. if (keycode==39){ //39 --> '
  4.   keycode=180; //180 -->´
  5.   obj.value=obj.value+String.fromCharCode(keycode);
  6. }
  7. }

Esto no me funciona ya que en el text field me coloca ´', es decir los dos

Si alguien me pudiera echar una mano,...

Gracias de antemano
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
  #2 (permalink)  
Antiguo 31/10/2008, 10:18
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problema con el caracter ' de programacion

1º No lo hagas capturando el evento de teclado. Espera a cuando se vaya a enviar el formulario y antes de enviarlo haces un replace.

Pero no, no hagas eso tampoco!

2º No lo hagas en Javascript, en el cliente. Hazlo en el lado del servidor. Cualquiera puede tener desactivado Javascript o enviarte un ' a propósito.


3º No sustituyas ' por ´. Lo que debes hacer es escapar los caracteres problemáticos. Es decir, que a. en lugar de sustituir por ´ usa \' (...WHERE campo = 'L\'HOSPITALET'); y b. No lo hagas sólo para '. Lo que tienes que hacer realmente es filtrar todos los caracteres problemáticos.
  #3 (permalink)  
Antiguo 31/10/2008, 10:59
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: problema con el caracter ' de programacion

Joer Venkman, ahora que lo había conseguido...

Vaya,ni se me había ocurrido...ciertamente es lo mejor.

Con respecto a escapar más carácteres he probado a consultara con !"·$%&/()=?¿1¡|@#~€¬y ninguno me da error la consulta,...no me encuentra nada pero no me da error...¿Se te ocurre alguno que debiera escapar???

Muchas gracias
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
  #4 (permalink)  
Antiguo 31/10/2008, 12:18
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: problema con el caracter ' de programacion

Si trabajás con php, podés usar http://www.php.net/manual/es/functio...ape-string.php
  #5 (permalink)  
Antiguo 03/11/2008, 05:09
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: problema con el caracter ' de programacion

Muchas gracias a los dos,...

Tema resuelto gracias a vuestra información.

Saludos
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
  #6 (permalink)  
Antiguo 03/11/2008, 05:29
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: problema con el caracter ' de programacion

Hola chicos!
Quizá ya no viene a cuento porque parece que el tema está resuelto pero bueno, por si le sirve a alguien. cuando realizas una query en sql que contenga una ' creo que lo mejor es doblar esa comilla simple y la consulta se hace correctamente. por ejemplo: La consulta de antes a la base de datos se soluciona así--> SELECT * FROM tabla WHERE campo= 'L''HOSPITALET' (fijate en la doble comilla entre la L y la H). Ojo, es pulsar dos veces la comilla simple, no la doble comilla (MAY+2). En tú código puedes hacer un split de la query y si encuentra ' que la doble. Salu2.
  #7 (permalink)  
Antiguo 03/11/2008, 05:47
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: problema con el caracter ' de programacion

bueno es otra solución

Aunque segun lo que e leído con la funcion mysql_real_escape_string() no sólo escapas los caracteres,sino que también evitas ataques de inundación cosa que es interesante, aunque a lo mejor con tu método también se evitarían, no se, sería probar.

Salu2
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
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:16.