Discussion:
Problema textarea
(demasiado antiguo para responder)
Verónica Navarro
2004-04-05 11:54:09 UTC
Permalink
Hola a todos!!

Tengo un textarea donde el usuario introduce un texto y puede
utilizar saltos de línea o signos de puntuación, se graba en la base de
datos y cuando hago una consulta de la base de datos y muestro ese texto
hay problemas con los saltos de línea y signos de puntuación. ¿Hay
alguna forma de grabar en la base de datos con los códigos y que luego
se puedan interpretar cuando se muestre el contenido?

Gracias.
Verónica
Lars Hoffmann
2004-04-05 12:21:41 UTC
Permalink
Post by Verónica Navarro
¿Hay
alguna forma de grabar en la base de datos con los códigos y que luego
se puedan interpretar cuando se muestre el contenido?
Una caja de texto debería interpretar bien tanto saltos de lineas como
signos de puntuación. Lo unico que da problemas es el simbolo "<" que debe
ser sustituido por "&lt;". Si no es eso el problema, necesitamos (como
siempre) ver una página donde el problema existe.
Bosio
2004-04-05 12:49:21 UTC
Permalink
Buenas,

On Mon, 5 Apr 2004 14:21:41 +0200, "Lars Hoffmann"
Post by Lars Hoffmann
Post by Verónica Navarro
¿Hay
alguna forma de grabar en la base de datos con los códigos y que luego
se puedan interpretar cuando se muestre el contenido?
Una caja de texto debería interpretar bien tanto saltos de lineas como
signos de puntuación. Lo unico que da problemas es el simbolo "<" que debe
ser sustituido por "&lt;". Si no es eso el problema, necesitamos (como
siempre) ver una página donde el problema existe.
El problema debe de ser el mostrar el contenido del campo en la
pagina, fuera de un campo de texto. No se que utilizara para esta
labor, pero en ASP solo hay que hacer un replace de los saltos de
linea por etiquetas html. Algo como:

replace(texto_de_bd, vbcrlf, "<br>")

Si usas otras tecnologias tendras que adaptar esto, pero la base es
la misma.

El tema de los signos de puntuacion no deberia dar problema pero si
que se debe de tener cuidado con comillas y apostrofes.
Lars Hoffmann
2004-04-05 13:03:25 UTC
Permalink
Post by Bosio
El problema debe de ser el mostrar el contenido del campo en la
pagina, fuera de un campo de texto.
Posiblemente, pero como no se especifica en el mensaje original, nos
quedamos como Rapel adivinando ;-)
Post by Bosio
El tema de los signos de puntuacion no deberia dar problema pero si
que se debe de tener cuidado con comillas y apostrofes.
Comillas y apostrofes no dan problemas en los textbox (pero si al insertar
datos en una bdd), pero puede haber muchas cosas que fallan, y prefiero
conocer el problema antes de adivinar la solución.
Bosio
2004-04-05 13:06:31 UTC
Permalink
Buenas,

On Mon, 5 Apr 2004 15:03:25 +0200, "Lars Hoffmann"
Post by Lars Hoffmann
Post by Bosio
El problema debe de ser el mostrar el contenido del campo en la
pagina, fuera de un campo de texto.
Posiblemente, pero como no se especifica en el mensaje original, nos
quedamos como Rapel adivinando ;-)
Si, yo lanzaba la idea por si era eso :)
Post by Lars Hoffmann
Comillas y apostrofes no dan problemas en los textbox (pero si al insertar
datos en una bdd), pero puede haber muchas cosas que fallan, y prefiero
conocer el problema antes de adivinar la solución.
A eso me referia, que "pueden ser problematicos" trabajando con
entradas del usuario y bases de datos. Lo dejaba como recomendacion
por si le da problemas en el futuro. Ah! y yo de adivinos, horoscopos
y demas nada que dice el papa que es pecao :P
Álvaro Lozano
2004-04-06 13:27:37 UTC
Permalink
Post by Lars Hoffmann
Post by Verónica Navarro
¿Hay
alguna forma de grabar en la base de datos con los códigos y que luego
se puedan interpretar cuando se muestre el contenido?
Una caja de texto debería interpretar bien tanto saltos de lineas como
signos de puntuación. Lo unico que da problemas es el simbolo "<" que debe
ser sustituido por "&lt;". Si no es eso el problema, necesitamos (como
siempre) ver una página donde el problema existe.
A mi me ocurrió, lo hacía (reconozco que muy cutre) con javascript +
php, y lo que hacía era añadir a un archivo mediante php, los campos del
form en forma de variables para luego mostrarlos en otra pagina con un
document.write(); y en el textarea me pasaba lo mismo, al poner saltos
de línea, cascaba todo... y si pones comillas, etc tb (no se me había
ocurrido poner en el php que cambie los signos por su respectiva
¿codificación en ASCII (no se como se llama eso de poner %20 en vez de
un espacio)?.
Tal vez suceda eso, si es así, a mi también me interesa saber como hacer
para cambiar los saltos de línea por una etiqueta o por algo que lo
solucione.

Saludos.
Faro
2004-04-06 15:46:01 UTC
Permalink
Post by Álvaro Lozano
Tal vez suceda eso, si es así, a mi también me interesa saber como hacer
para cambiar los saltos de línea por una etiqueta o por algo que lo
solucione.
Usando la función nl2br, htmlentities, y a mal andar
str_replace().

Del manual de php:

<?php
echo nl2br("foo isn't\n bar");
?>

Devuelve:

foo isn't<br />
bar


<?php
$str = "A 'quote' is <b>bold</b>";

// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str);
?>

Esta es más potente, recomiendo leer la documentación.

str_replace te permite hacer las sustituciones que creas
convemientes en la cadena. Es la más flexible de todas, claro.
--
Mail : faro at escomposlinux . org
Jabber: sneb at jabber . org
Debian GNU/Linux - Usuario Linux #162541
http://antares.escomposlinux.org
Álvaro Lozano
2004-04-06 16:34:40 UTC
Permalink
Sí, pero me refiero que, por ejemplo, tu quieres que lo que esté entre
asteriscos, *esto*, salga en negrita; pues haces que busque el carácter
* y lo tranforme en <b> o </b> según corresponda, pero, como haces para
buscar el carácter "retorno de carro" ???? Es lo que desconozco...

Muchas gracias.
Post by Faro
Post by Álvaro Lozano
Tal vez suceda eso, si es así, a mi también me interesa saber como hacer
para cambiar los saltos de línea por una etiqueta o por algo que lo
solucione.
Usando la función nl2br, htmlentities, y a mal andar
str_replace().
<?php
echo nl2br("foo isn't\n bar");
?>
foo isn't<br />
bar
<?php
$str = "A 'quote' is <b>bold</b>";
echo htmlentities($str);
?>
Esta es más potente, recomiendo leer la documentación.
str_replace te permite hacer las sustituciones que creas
convemientes en la cadena. Es la más flexible de todas, claro.
Faro
2004-04-06 16:46:50 UTC
Permalink
Post by Álvaro Lozano
Sí, pero me refiero que, por ejemplo, tu quieres que lo que esté entre
asteriscos, *esto*, salga en negrita; pues haces que busque el carácter
* y lo tranforme en <b> o </b> según corresponda, pero, como haces para
buscar el carácter "retorno de carro" ???? Es lo que desconozco...
No te entiendo. Si ya tienes la función nl2br que lo hace de forma
trasnparente, ¿para qué quieres saberlo?

El caracter CR (Retorno de Carro) es el 13, pero dado que los diferentes
sistemas operativos sueles tratar el temas de los saltos de línea de
manera diferente, creo que es más lógico evitar complicaciones usando
las funciones que te proporciona el lenguaje. ¿O es que quieres hacer
algo diferente a sustituirlos por <br> que es lo trataba este hilo?
--
Mail : faro at escomposlinux . org
Jabber: sneb at jabber . org
Debian GNU/Linux - Usuario Linux #162541
http://antares.escomposlinux.org
Álvaro Lozano
2004-04-06 21:57:56 UTC
Permalink
Post by Faro
El caracter CR (Retorno de Carro) es el 13, pero dado que los diferentes
sistemas operativos sueles tratar el temas de los saltos de línea de
manera diferente, creo que es más lógico evitar complicaciones usando
las funciones que te proporciona el lenguaje. ¿O es que quieres hacer
algo diferente a sustituirlos por <br> que es lo trataba este hilo?
Efectivamente, es lo que me gustaría. Mañana buscaré información acerca
de la función nl2br, ya que la desconocia y tal vez me sirva, auqnue no
sé... En fin, luego lo miro (nunca dejas de aprender cosas nuevas).

Muchas gracias y saludos.
Verónica Navarro
2004-04-07 06:31:20 UTC
Permalink
Gracias a todos... en principio lo he solucionado formateando el texto antes
de guardarlo en la bd con:

function formatear_grabar(texto) {
texto = texto.replace(/\n/g,'<br>');
texto = texto.replace(/"/g,'&quot;');
return texto;
}

y después, cuando lo recupero, antes de mostrarlo en el textarea hago lo
inverso:

function formatear_mostrar(texto) {
texto = texto.replace(/&quot;/g,"\"");
texto = texto.replace(/<br>/g,"\n");
texto = texto.replace(/&lt;br&gt;/g,"\n");
return texto;
}

No sé si es la mejor solución, pero para lo que me habían preguntado (ya q la
duda no era mía), les funciona.

Gracias,
Verónica
Lars Hoffmann
2004-04-07 08:23:54 UTC
Permalink
Verónica Navarro escribió / skrev
Post by Verónica Navarro
texto = texto.replace(/"/g,'&quot;');
te falta substituir ' con ''
--
Publica fotos de tu Cine en Casa en
http://www.intercambiodvd.com/CineEnCasa
Verónica Navarro
2004-04-07 10:26:40 UTC
Permalink
Ok, gracias.
Post by Lars Hoffmann
Verónica Navarro escribió / skrev
Post by Verónica Navarro
texto = texto.replace(/"/g,'&quot;');
te falta substituir ' con ''
--
Publica fotos de tu Cine en Casa en
http://www.intercambiodvd.com/CineEnCasa
Cougar
2004-04-05 12:57:35 UTC
Permalink
Post by Verónica Navarro
Hola a todos!!
Tengo un textarea donde el usuario introduce un texto y puede
utilizar saltos de línea o signos de puntuación, se graba en la base de
datos y cuando hago una consulta de la base de datos y muestro ese texto
hay problemas con los saltos de línea y signos de puntuación. ¿Hay
alguna forma de grabar en la base de datos con los códigos y que luego
se puedan interpretar cuando se muestre el contenido?
Gracias.
Verónica
Si el texto se va a almacenar en base de datos es mas practico hacerlo en
texto plano y cuando se lea, reemplazar los saltos de línea por <br />.
Asi no deberia haber problema.
Continúe leyendo en narkive:
Resultados de búsqueda para 'Problema textarea' (Preguntas y respuestas)
3
respuestas
Al dar enter en