Foros del Web » Programando para Internet » PHP »

Libro de visitas: problema con textarea y mysql

Estas en el tema de Libro de visitas: problema con textarea y mysql en el foro de PHP en Foros del Web. Hola. He creado un libro de visitas. Todo va bien, pero al mostrarme la información del campo mensaje (textarea) no me muestra los saltos de ...
  #1 (permalink)  
Antiguo 25/08/2004, 12:38
fgb
 
Fecha de Ingreso: agosto-2004
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
Libro de visitas: problema con textarea y mysql

Hola.
He creado un libro de visitas. Todo va bien, pero al mostrarme la información del campo mensaje (textarea) no me muestra los saltos de linea automáticos:
por ejemplo:

en el formulario entramos :
linea 1
linea 2
linea 3


el mensaje después de la consulta es:

linea 1 linea 2 linea 3


Si los saltos de linea son manuales, si sale bien.

Mito la base de datos mysql y veo que están grabados en forma:

linea1 lnea 2 linea 3

Deduzco que el problema está a la hora de grabar el formulario en la base de datos, pero me he encallado, no sé que más probar.

¿Alguien me puede ayudar?

Muchas gracias

Última edición por fgb; 25/08/2004 a las 12:41
  #2 (permalink)  
Antiguo 25/08/2004, 13:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Necesitas usar (aplicar) la función:

nl2br() a la hora de presentar tus datos sobre la variable que tiene tu mensaje.

www.php.net/nl2br

Un saludo,
  #3 (permalink)  
Antiguo 25/08/2004, 13:51
fgb
 
Fecha de Ingreso: agosto-2004
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
Gracias por responder tan rápidamente.

Lo tengo así:

<?php echo nl2br($row_rg_librodevisigtas['comentario']); ?>

y los saltos de linea que veo en el formulario (textarea) no se me graban en la base de datos con los saltos.

La pregunta es:

dónde coloco el nl2br, en la página donde tengo el formulario o en la página donde muestro los resultados (consulta de la base de datos)

Gracias por tu ayuda.
  #4 (permalink)  
Antiguo 25/08/2004, 14:12
Avatar de xavivars  
Fecha de Ingreso: enero-2002
Ubicación: Benissa - la Marina Alta
Mensajes: 212
Antigüedad: 15 años, 11 meses
Puntos: 1
puedes hacerlo donde quieras: en los casos en los que lo he utilizado yo lo he hecho al guardarlo.
  #5 (permalink)  
Antiguo 25/08/2004, 14:17
fgb
 
Fecha de Ingreso: agosto-2004
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
Gracias xavivars.
Lo probaré aunque no lo veo claro. En la base de datos está si saltos, así que deduzco que es un problema al grabar.
  #6 (permalink)  
Antiguo 25/08/2004, 15:02
Avatar de Keleriano  
Fecha de Ingreso: junio-2002
Ubicación: Granada
Mensajes: 133
Antigüedad: 15 años, 5 meses
Puntos: 0
Yo tuve el mismo problema pero a mi si que se me guardaban los saltos de linea en la base de datos, asi que coloque la funcion nl2br (); en la página que muestra los mensajes.

Un Saludo!
  #7 (permalink)  
Antiguo 25/08/2004, 15:55
Avatar de chubu  
Fecha de Ingreso: enero-2002
Ubicación: Buenos Aires
Mensajes: 133
Antigüedad: 15 años, 10 meses
Puntos: 0
Siempre conviene hacerlo al mostrar la información, ya que si a futuro quieres utilizar esa información para otra cosa que mostrarla (por ejemplo permitir que sea modificada) deberás remover los tags br antes de procesarla.
__________________
:pensando:hay algo mal que no anda bien
  #8 (permalink)  
Antiguo 26/08/2004, 00:13
fgb
 
Fecha de Ingreso: agosto-2004
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
Gracias amigos.
Me gustaría saber como mysql graba los registros, porque por lo que me decis, a veces los graba con saltos de linea y a veces no.
Creo que algo debo tener en el código que hace que los omita, a menos que por defecto los omita y haya que poner alguna instrucción.

Gracias de verdad por la ayuda que me estáis dando, yo sigo probando a ver si lo soluciono, pero de momento nada.
  #9 (permalink)  
Antiguo 27/08/2004, 02:11
fgb
 
Fecha de Ingreso: agosto-2004
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 0
Al fin pude solucionar el problema.

La solución es la siguiente:

En la base de datos tienes k poner el tipo de campo TEXT luego para que mostrar los "intros" que se hacen, haz lo siguiente:

- En la pagina que quieras mostrar el texto que has escrito tienes que reemplazar los retornos de carro, \r\n, por <br>. Se hace de la siguiente manera.

$texto = str_replace("\r\n","<br>",$texto);


Esta respuesta es del amigo Drloco, al que doy las gracias igual que a todos vosotros.


Mi conclusión al problema es la siguiente:

utilizo phpmyadmin para trabajar con mysql. Al enviar el textarea a la base de datos, visualizaba la misma y no veía los saltos de linea automático, en cambio si introducía saltos de linea manuales si los veía. Eso me confundió. Así que si alguien se encontrara con el problema, aunque no vea los saltos de linea que manda el textarea, si están. Luego simplemente lo que hay que hacer es el str_replace.

Un saludo a todos y gracias.
  #10 (permalink)  
Antiguo 27/08/2004, 11:24
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 13 años, 5 meses
Puntos: 53
Yo tenia exactamente el mismo problema, y lo solucione programando esta funcion, que ademas de darte los saltos de linia, tambien identifica etiquetas HTML, para que las personas no pongan HTML, pues podrian afectar el dise~no de tu web, la puedes usar, si quereis, aunque parece que ya solucionaste tu problema, pero bueno....

Código PHP:
function formato($texto){  //Da formato HTML a un texto
        
$ok=htmlspecialchars($texto);
        return 
nl2br($ok);
    } 
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 21:10.