Foros del Web » Programando para Internet » PHP »

Cambio de linea en campo textarea y envio por mail

Estas en el tema de Cambio de linea en campo textarea y envio por mail en el foro de PHP en Foros del Web. Hola de nuevo: Una pregunta para los expertos: Tengo un formulario, tipo textarea, para rellenar y enviar por mail mediante el archivo php correspondiente. El ...
  #1 (permalink)  
Antiguo 27/10/2006, 04:26
 
Fecha de Ingreso: noviembre-2005
Mensajes: 86
Antigüedad: 18 años, 4 meses
Puntos: 0
Cambio de linea en campo textarea y envio por mail

Hola de nuevo: Una pregunta para los expertos:
Tengo un formulario, tipo textarea, para rellenar y enviar por mail mediante el archivo php correspondiente.
El problema es que el campo textarea lo añade al mail sin cambio de carro, es decir, no respecta los puntos y aparte del texto escrito en el textarea.
He probado a poner en el archivo php el "\n", perro no funciona:

$cuerpo="
<html>
<head>
<title>Prueba de correo</title>
</head>
<body>
<table>
<tr>
<td>Hola: ".$usuario." te envía este mensaje:</td>
</tr>
<tr>
<td>".$_POST['texto']."\n"</td>
</tr>
</table>
</body>
</html>";

¿Puede forzarse a mantener el cambio de carro o es imposible?
  #2 (permalink)  
Antiguo 27/10/2006, 06:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Debes indicar el código completo que USAS!.

No se vé en ese código que pusistes totalmente fuera de contexto como envias el e-mail ..

Suponemos!, que tu ya generas el e-mail con sus cabeceras adecuadas para indicar que lo que envias es HTML? ... (no dejes que "supongamos nada" .. siempre aporta -datos- sobre tus problemas ..).

Por otro lado .. tu principal problema es que no conoces que cuando tu ingresas datos en un "textarea" se origina un salto de línea como código de control: \n o \r\n o \r (según S.O. del usuario que actua sobre ese textarea).

En "HTML" el salto de línea no es ese "código" sino el "tag": <br> .. así que tienes que tomar tu dato que llega de un textarea y aplicar la sustitución de \n -> <br> para que el "HTML" lo entienda así (mejor dicho el cliente de correo).

Sólo debes usar la función nl2br():

Código PHP:
nl2br($_POST['texto']) 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 27/10/2006, 06:17
 
Fecha de Ingreso: noviembre-2005
Mensajes: 86
Antigüedad: 18 años, 4 meses
Puntos: 0
Salto de linea en textarea


Gracias Cluster. Mucho más claro tu comentario que en el Manual de PHP.
Ahora lo entiendo perfectamente.
  #4 (permalink)  
Antiguo 27/10/2006, 06:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por informa Ver Mensaje

Gracias Cluster. Mucho más claro tu comentario que en el Manual de PHP.
Ahora lo entiendo perfectamente.
mm Lamenteblemente ese "funcionamiento" de un "<textarea>" lo le correponde a un manual de PHP describirlo .. más bien a un o de HTML. Luego esos sí en PHP una vez que sepas como "funciona" tendrás que buscar la forma de "sustituir" una cadena dada (\n .. etc) en otra (<br>) ..

Esto lo podrías haber hecho con "str_replace()" .. pero como PHP está netamente orientado a solventar problemas con creación de "páginas web" .. ya nos implementaron una función de uso común que trata ese tema particular: nl2br()

Este "concepto" tienes que tenerlo claro .. si hay "dos parte" en un proceso como es el caso: HTML por un lado vs PHP al otro .. tienes que verificar como una "parte" envia a la "otra" y así tendrás menos problemas o conjeturas que hacerte.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 27/10/2006, 06:30
 
Fecha de Ingreso: noviembre-2005
Mensajes: 86
Antigüedad: 18 años, 4 meses
Puntos: 0
Salto de linea en texto escrito en textareas


Si señor. Probado y funcionando.

<td>".n12br($_POST['texto'])."\n"</td>

Perfecto
  #6 (permalink)  
Antiguo 27/10/2006, 06:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por informa Ver Mensaje

Si señor. Probado y funcionando.

<td>".n12br($_POST['texto'])."\n"</td>

Perfecto
Se te fué el dedo ..

No es n12br() sino nl2br() (no un 1 sino una "ele" l)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 30/10/2006, 03:52
 
Fecha de Ingreso: noviembre-2005
Mensajes: 86
Antigüedad: 18 años, 4 meses
Puntos: 0
Enviar por email un parrafo que viene de un textarea


Tienes toda la razón Cluster. Se me fué el dedo.
(Estas en todo.....jeje)
  #8 (permalink)  
Antiguo 10/01/2007, 06:05
 
Fecha de Ingreso: junio-2006
Mensajes: 10
Antigüedad: 17 años, 10 meses
Puntos: 0
Pregunta Re: donde ubico el nl2br() (?)

Hola chicos Estan tratando el tema que necesito: Mi pregunta si pudieranb decierme es donde ubico el nl2br() (???)
El problema lo tgo en la variable pedido, que no me toma los enter y sale toda de corrido.....

<?
$header = 'From: ' . $mail . " \r\n";
$to = "[email protected]";
$subject = "Formulario de Pedido";
$msg = "$nombre, Le describle el siguiente Pedido\n\n";
$msg .= "Teléfono: $telefono\n";
$msg .= "E-mail: $mail\n";
$msg .= "Pedido: $body\n";
mail($to, $subject, $msg, "From: $mailfrom");


?>

Espero su respuestaaa, Graciassssss! Muchas!....
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 08:52.