Foros del Web » Programando para Internet » PHP »

Saltos de línea sin HTML

Estas en el tema de Saltos de línea sin HTML en el foro de PHP en Foros del Web. Buenas tardes, Tengo un problema para desarrollar un código respecto a algo que necesito para un proyecto. mi problema es el siguiente: ¿Como puedo meter ...
  #1 (permalink)  
Antiguo 21/04/2004, 08:17
 
Fecha de Ingreso: abril-2004
Mensajes: 42
Antigüedad: 20 años
Puntos: 0
Saltos de línea sin HTML

Buenas tardes,

Tengo un problema para desarrollar un código respecto a algo que necesito para un proyecto. mi problema es el siguiente:

¿Como puedo meter textos con saltos de línea en una base de datos? He probado con la función nl2br, y lo que hace es poner <br>. Hasta ahi funciona bien, ya que al mostrar el texto en un consulta hace los saltos de línea de modo idoneo.

Mi problema surge cuando quiero modificar este texto por medio de un formulario: los <br> se muestran en el texto, y al hacer algún cambio, vuelve a insertar los mismos saltos de línea (<br>), o sea, que se duplican. Al hacer una tercera modificación, se triplican, ya así sucesivamente.

¿Alguien conoce alguna forma de insertar los textos con saltos de línea en la base de datos sin necesidad de insertar código HTML? Y además, ¿como puedo hacer para que luego los <br> no se muestren al sacar el texto en un formulario?

Gracias de antemano
  #2 (permalink)  
Antiguo 21/04/2004, 08:25
 
Fecha de Ingreso: marzo-2004
Ubicación: $_SERVER['DOCUMENT_ROOT'] :-)
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
No se puede, si lo que quieres es mostrar el resultado en una pagina web, entonces tendrás que formatear con HTML (ya sea br ó p ó div).

Creo que tu problema reside en CUANDO aplicar el formato.

Al parecer estas aplicando nl2br ANTES de guardar el texto en tu BD (o en tu archivo), y ese es el problema. Utiliza nl2br solo cuando vas a MOSTRAR el texto en la página, así cada vez que lo quieras editar, o lo quieras usar en otro medio, no tendrá los molestos <br />'s
__________________
-- girls.code.better --
  #3 (permalink)  
Antiguo 21/04/2004, 08:28
 
Fecha de Ingreso: abril-2004
Mensajes: 42
Antigüedad: 20 años
Puntos: 0
creo que he entendido lo que dices, voy a probarlo, gracias.
  #4 (permalink)  
Antiguo 21/04/2004, 08:45
 
Fecha de Ingreso: abril-2004
Mensajes: 42
Antigüedad: 20 años
Puntos: 0
no ha funcionado, me sigue haciendo algo parecido. envio el texto a la base de datos sin hacerle el nl2dr, y le aplico la funcion antes de mostrarlo en el formulario , y me saca los <br> en el textarea, y luego me los guarda en la base de datos. si lo hago dos o tres veces, me insertar <br> cada vez.

lo que yo quiero hacer es lo siguiente:

enviar mediante un formulario un texto a una base de datos (normalmente, por mucho que en el <textarea> se muestren los saltos de línea, el texto siempre llega sin espacios) y que los saltos de línea los coja automaticamente, sin necesidad de escribir <br> (esto es porque lo van a utilizar personas sin conocimientos de HTML). eso si que lo hago bien con nl2dr. hasta ahi marcha perfecto.

el problema surge cuando abres ese texto con el formulario, ya que aparecen los <br> que ha insertado la función nl2dr. pero eso no es lo peor, ya que al enviar el texto de nuevo a la base de datos, vuelve a insertar las <br> dichosas. es normal, lo entiendo, ya que cada vez que le mando actualizar utilizo la función nl2dr en la segunda página.

Si no puedo hacerlo mediante PHP, ¿conoces alguna otra forma?

gracias por tu ayuda codegirl.
  #5 (permalink)  
Antiguo 21/04/2004, 08:46
 
Fecha de Ingreso: abril-2004
Mensajes: 42
Antigüedad: 20 años
Puntos: 0
lo que quiero que haga es lo mismo que hace este foro: mandar los textos con saltos de línea y que al modificarlos no aparezcan los <br> dichosos.
  #6 (permalink)  
Antiguo 21/04/2004, 08:57
 
Fecha de Ingreso: marzo-2004
Ubicación: $_SERVER['DOCUMENT_ROOT'] :-)
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
No me entendiste.

Solo aplicale los <br> cuando vayas a mostrar el texto FORMATEADO en la pagina, NO cuando vayas a mostrarlos en un textarea para su edicion.

Para cualquier otra cosa, solo muestra el texto sin aplicarle nl2br.
__________________
-- girls.code.better --
  #7 (permalink)  
Antiguo 21/04/2004, 09:01
 
Fecha de Ingreso: abril-2004
Mensajes: 42
Antigüedad: 20 años
Puntos: 0
ahora si que te he entendido, y me sale perfectamente, gracias por tu ayuda codegirl!!!!!
  #8 (permalink)  
Antiguo 21/04/2004, 09:40
Avatar de pedro_php  
Fecha de Ingreso: marzo-2004
Ubicación: PC de mi casa o PC de la oficina
Mensajes: 97
Antigüedad: 20 años, 1 mes
Puntos: 0
Cita:
Mensaje Original por pagazauskas
no ha funcionado, me sigue haciendo algo parecido. envio el texto a la base de datos sin hacerle el nl2dr, y le aplico la funcion antes de mostrarlo en el formulario , y me saca los <br> en el textarea, y luego me los guarda en la base de datos. si lo hago dos o tres veces, me insertar <br> cada vez.

lo que yo quiero hacer es lo siguiente:

enviar mediante un formulario un texto a una base de datos (normalmente, por mucho que en el <textarea> se muestren los saltos de línea, el texto siempre llega sin espacios) y que los saltos de línea los coja automaticamente, sin necesidad de escribir <br> (esto es porque lo van a utilizar personas sin conocimientos de HTML). eso si que lo hago bien con nl2dr. hasta ahi marcha perfecto.

el problema surge cuando abres ese texto con el formulario, ya que aparecen los <br> que ha insertado la función nl2dr. pero eso no es lo peor, ya que al enviar el texto de nuevo a la base de datos, vuelve a insertar las <br> dichosas. es normal, lo entiendo, ya que cada vez que le mando actualizar utilizo la función nl2dr en la segunda página.

Si no puedo hacerlo mediante PHP, ¿conoces alguna otra forma?

gracias por tu ayuda codegirl.
El problema es que no lo estás haciendo bien...
la función es nl2br(); NO nl2dr.
nl2br significa "New Line 2 (to) Break"
__________________
Es más importante estar de acuerdo que tener la razón.
MI NUEVO WEBLOG
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 18:44.