Foros del Web » Programando para Internet » ASP Clásico »

Comillas en formulario

Estas en el tema de Comillas en formulario en el foro de ASP Clásico en Foros del Web. Hola: Tengo un formulario, que guarda los datos en la BBDD. El problema es que cuando alguién inserta algún dato "entre comillas " Todo el ...
  #1 (permalink)  
Antiguo 27/12/2004, 14:53
Avatar de kvoloj  
Fecha de Ingreso: agosto-2003
Mensajes: 124
Antigüedad: 21 años, 8 meses
Puntos: 1
Comillas en formulario

Hola:

Tengo un formulario, que guarda los datos en la BBDD.
El problema es que cuando alguién inserta algún dato "entre comillas "

Todo el texto que está a partir de las comillas no se inserta en la BBDD.

En el insert tengo texto = Replace(texto, "'", "''")

Gracias por la ayuda

K
  #2 (permalink)  
Antiguo 27/12/2004, 21:57
Avatar de TurKa  
Fecha de Ingreso: enero-2003
Ubicación: Gerli, Avellaneda
Mensajes: 543
Antigüedad: 22 años, 3 meses
Puntos: 4
Lo que puedes hacer es "mantener" las comillas dobles pero reemplazándolas por código HTML:

Replace(Request.Form("campo"),chr(34),""")
__________________
Programación LAMP con Scrum y XP
www.eugeniabahit.com.com.ar
  #3 (permalink)  
Antiguo 28/12/2004, 02:22
Avatar de kvoloj  
Fecha de Ingreso: agosto-2003
Mensajes: 124
Antigüedad: 21 años, 8 meses
Puntos: 1
Hola Turka:

Gracias por tu respuesta.
Y este código, se pone también en el insert?
Puedo usarlo junto con texto = Replace(texto, "'", "''")

es decir los puedo poner así?
texto = Replace(texto, "'", "''")
Replace(Request.Form("texto"),chr(34),""")

Gracias

K
  #4 (permalink)  
Antiguo 28/12/2004, 08:41
Avatar de TurKa  
Fecha de Ingreso: enero-2003
Ubicación: Gerli, Avellaneda
Mensajes: 543
Antigüedad: 22 años, 3 meses
Puntos: 4
No. Hazlo así:
texto = Replace(texto, "'", "''")
texto = Replace(texto,chr(34),""")

cuando lo uses en el INSERT, simplemente utiliza la variable texto.

__________________
Programación LAMP con Scrum y XP
www.eugeniabahit.com.com.ar
  #5 (permalink)  
Antiguo 28/12/2004, 08:57
Avatar de TurKa  
Fecha de Ingreso: enero-2003
Ubicación: Gerli, Avellaneda
Mensajes: 543
Antigüedad: 22 años, 3 meses
Puntos: 4
Ahora que lo pienso mejor:
cuando haces esto: Replace(texto, "'", "''")
Estás reemplazando una comilla simple (') por dos comillas simples('')??????? No entiendo ahí que quieres hacer. Pero si efectivamente quieres reemplazar las simples por las dobles, mejor utiliza esto:
Replace(texto,"'",""")

Si me permites un consejo, deja de lado ese reemplazo y simplemente utiliza
texto = Replace(texto,chr(34),""")

Saludos!!
__________________
Programación LAMP con Scrum y XP
www.eugeniabahit.com.com.ar
  #6 (permalink)  
Antiguo 28/12/2004, 09:08
Avatar de kvoloj  
Fecha de Ingreso: agosto-2003
Mensajes: 124
Antigüedad: 21 años, 8 meses
Puntos: 1
Si. efectivamente en la primera cambio comilla sencilla por doble,porque la sencilla me genera errores.

Voy a probarla.

Muchas Gracias

K
  #7 (permalink)  
Antiguo 28/12/2004, 09:22
Avatar de TurKa  
Fecha de Ingreso: enero-2003
Ubicación: Gerli, Avellaneda
Mensajes: 543
Antigüedad: 22 años, 3 meses
Puntos: 4
Aps!!! Entonces sí, debes utilizar primero:
Replace(texto,"'",""")

Sino, también puedes eliminarlas directamente:
Replace(texto,"'","")

ó reemplazarlas por un tilde (no es lo mismo escribir I'am que I"am. Se entenderá mejor si escribes I´am):
Replace(texto,"'","´")

Todo depende del tipo de datos que el usuario vaya a insertar en el campo.
__________________
Programación LAMP con Scrum y XP
www.eugeniabahit.com.com.ar
  #8 (permalink)  
Antiguo 28/12/2004, 09:30
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
el cambio de una comilla simple por dos de ellas seguidas es para que la sentencia SQL no 'truene', el tema de las comillas normales no lo entiendo kvoloj... nunca tuve problemas con esas comillas.

Edit:

Perdón, si que puede haber problemas... cuando ese dato con comillas lo desplegás en un 'input type=text', lo mostrado en él se corta al encontrarse con la primer comilla... pero los datos, igualmente, existen en la BD (y si mirás el código fuente del html generado también los vas a ver, salvo que el imput text lo corta)
__________________
...___...

Última edición por AlZuwaga; 28/12/2004 a las 09:34
  #9 (permalink)  
Antiguo 28/12/2004, 09:40
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Cita:
ó reemplazarlas por un tilde (no es lo mismo escribir I'am que I"am. Se entenderá mejor si escribes I´am)
TurKa, el motor de la base de datos, al encontrarse con O''Brian (por el replace de un ' por dos ' seguidos), lo interpreta como O'Brian (con un solo ') y lo guarda así, no lo guarda con dos '. Esa es la forma de "escapar" el caracter apóstrofe.

Ahora bien, puede depender de la base de datos... creo que en MySQL la comilla normal es problemática y se debe "escapar" así /" o así \" (no recuerdo ahora con cual barra)
__________________
...___...
  #10 (permalink)  
Antiguo 28/12/2004, 09:57
Avatar de TurKa  
Fecha de Ingreso: enero-2003
Ubicación: Gerli, Avellaneda
Mensajes: 543
Antigüedad: 22 años, 3 meses
Puntos: 4
Al Zuwaga ¿¿¿Moderador {MiserableMode} ??? jajaja ¡Esa no la tenía!
Claro! entiendo lo de las "comillitas" pero, ten en cuenta que yo no me refería a reemplazar por dos comillas simples, sino que le indiqué a kvoloj reemplazar por UNA comilla doble. Es decir, reemplazar por 2 simples es lo mismo que mantener una sola. Entonces, si el necesita dos que directamente sea una doble. Pero imaginate una doble en O"Brian????

Besotes!!!!
__________________
Programación LAMP con Scrum y XP
www.eugeniabahit.com.com.ar
  #11 (permalink)  
Antiguo 28/12/2004, 11:05
Avatar de kvoloj  
Fecha de Ingreso: agosto-2003
Mensajes: 124
Antigüedad: 21 años, 8 meses
Puntos: 1
Hola Turka y Al Zuwaga:

El tema de las comillas simples, es que en el formulario cuando alguien inserta un texto entre " lo que sigue a continuación NO llega a la BBDD

ej.- Si el usuario inserta este texto:

Claro! entiendo lo de las "comillitas" pero, ten en cuenta que yo no me refería a reemplazar por dos comillas simples, sino que le indiqué a kvoloj reemplazar por UNA comilla doble. Es decir, reemplazar por 2 simples es lo mismo que mantener una sola. Entonces...

Lo único que llega a la BBDD es:

Claro! entiendo lo de las

Entonces lo que necesitaba es un solución para que esto no me pase, actualmente yo tengo lo de Replace(texto,"'","") de la comilla simple, porque me sucede lo que dices:

"Truena el SQL. " y me genera error.

Dices que aunque no lo muestre si está el texto completo en la BBDD?? y como lo recupero sin error? Yo uso SQL Server

Gracias

K
  #12 (permalink)  
Antiguo 28/12/2004, 12:13
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
La verdad que no sé, nunca me ha pasado que los textos se corten como te ocurre a vos.

Hacé una cosa, en vez de ejecutar la SQL que inserta los datos, hacele un response.write a ella y pegá aquí el resultado para verlo (e indicá en donde "se corta", en caso de que pase, y qué contenido tenía el texto original)
__________________
...___...
  #13 (permalink)  
Antiguo 28/12/2004, 13:03
Avatar de TurKa  
Fecha de Ingreso: enero-2003
Ubicación: Gerli, Avellaneda
Mensajes: 543
Antigüedad: 22 años, 3 meses
Puntos: 4
Para mi, insisto, la mejor solución es reemplazar las comillas como te comenté antes y por las dudas, también reemplazas las comillas simples:

Esto reemplaza las comillas dobles:
texto = Replace(texto,chr(34),""")

Y esto SIN ESPACIOS reemplaza las comillas simples:
texto = Replace(texto,chr(39),"& # 39;")

Fíjate que escribí & # 39; con espacios porque sino el foro me lo reemplaza y no me deja ver el código. tu quita esos espacios en blanco.

Con esto no deberías tener ningún problema y en caso que exista el problema habrá que ver el resto del código por las dudas haya algo que esté generando errores.
__________________
Programación LAMP con Scrum y XP
www.eugeniabahit.com.com.ar

Última edición por TurKa; 28/12/2004 a las 13:05
  #14 (permalink)  
Antiguo 30/12/2004, 14:52
Avatar de kvoloj  
Fecha de Ingreso: agosto-2003
Mensajes: 124
Antigüedad: 21 años, 8 meses
Puntos: 1
Hola Gracias los dos!!

Voy a probar lo que me dice Turka y les comentaré!

Bueno y si no he respondido hasta la otra semana....... Pues Feliz año nuevo!!!


Salu2

K
  #15 (permalink)  
Antiguo 26/08/2005, 06:12
Avatar de kvoloj  
Fecha de Ingreso: agosto-2003
Mensajes: 124
Antigüedad: 21 años, 8 meses
Puntos: 1
Comillas no llegan ala BBDD

he estado haciendo pruebas sin resultado, pero ya averigué lo siguiente.

yo tengo una página con el formulario, otra con la confirmación y la última es la que inserta los datos.

en la página de confirmación, al hacer el request, aparecen las comillas sin embargo al pasarlas al la página de "hemos recibido su datos" la cual inserta los datos en la BBDD ya no las pasan o sea que el error esta en la página de confirmación, la cual pasa los datos a la página 3 a través de un post

<form method="post" action="finformulario.asp" name="Theform">
<input type="hidden" name="titulolibro" value="<%=request("titulolibro")%>">

no se si al enviar por post tb se puede usar el
texto = Replace(texto,chr(34),"&quot;")

Gracias


K
  #16 (permalink)  
Antiguo 26/08/2005, 06:30
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Este post tenía 8 meses sin seguimiento ....¿sigues con el problema de las comillas desde entonces?

Supongo que a estes alturas ya habrás probado Server.HTMLEncode y abras implementado algún HTMLDecode.

Tendrías que desplegar el valor de la variable problemática en la segunda página justo antes del envío y justo después de recibirla para ver dónde esta el error.

No se si todo lo expuesto en los primeros mensajes aún sea válido

Saludos
  #17 (permalink)  
Antiguo 26/08/2005, 07:20
Avatar de kvoloj  
Fecha de Ingreso: agosto-2003
Mensajes: 124
Antigüedad: 21 años, 8 meses
Puntos: 1
problemas en comillas

si. sigo sin poder resolver el problema, porque probaba todo lo que me indicaron y seguía sin funcionar, pero es que acabo de descubrir el error y no es al insertar en la BBDD sino al pasar los datos de una página a otra.

lo que no se es como evitar eso.

Gracias

K
  #18 (permalink)  
Antiguo 26/08/2005, 09:20
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Cita:
Supongo que a estes alturas ya habrás probado Server.HTMLEncode y abras implementado algún HTMLDecode.

Tendrías que desplegar el valor de la variable problemática en la segunda página justo antes del envío y justo después de recibirla para ver dónde esta el error.
¿Haz hecho eso?
  #19 (permalink)  
Antiguo 26/08/2005, 09:47
Avatar de kvoloj  
Fecha de Ingreso: agosto-2003
Mensajes: 124
Antigüedad: 21 años, 8 meses
Puntos: 1
no.no he probado eso, porq no se como hacerlo, yo paso los datos del formulario así:

<form method="post" action="finformulario.asp" name="Theform">
<input type="hidden" name="titulolibro" value="<%=request("titulolibro")%>">


he probado con <%=Server.HTMLencode(request("titulolibro"))%>"> , pero no funciona, no se si estoy ecribiendo mal la sentencia.

gracias

K
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:58.