Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jefferson andre da silva

Enviar variavel de texto multi-linha por um formulario

Recommended Posts

Ola, tenho um questionario de 13 opcoes multi escolha que sera enviado amanha aos clientes.

 

Neste formulario tem 2 campos de texto, 11 campos lista/menu e 2 campos de texto multi-linhas ( 8 linhas )

 

Os campos sao enviados normalmente mas qdo chega nos 2 campos texto multi-linhas simplesmente nao vai, ja testei colocando informacoes de 1 linha dentro destes campos e com multiplas linhas de informacoes, mas infelizmente nao consigo a partir dai.

 

Ja pesquisei na internet e fiz algumas adaptacoes, mas mesmo assim nada da certo nestes 2 campos, entao imagino que seja necessario usar recursos de "compactacao TRIM" de campos memo, mas ainda nao sei fazer isso em php.

 

 

Segue o script :

<?php
$empresa = $_POST['empresa'];
$usuario = $_POST['usuario'];
//$p1 = $_POST['p1'];
$p2 = $_POST['p2'];
$p3 = $_POST['p3'];
$p4 = $_POST['p4'];
$p5 = $_POST['p5'];
$p6 = $_POST['p6'];
$p7 = $_POST['p7'];
//$p8 = $_POST['p8'];
$p9 = $_POST['p9'];
$p10 = $_POST['p10'];
$p11 = $_POST['p11'];
$p12 = $_POST['p12'];
$p13 = $_POST['p13'];
$p14 = $_POST['p14'];
$p15 = $_POST['p15'];
$p16 = $_POST['p16'];

//$p15 = utf8_decode(@$_POST['p15']);

$msg  = "<font face='Verdana' size='3'><b>Empresa:</b> \t$empresa</font><br>";
$msg .= "<font face='Verdana' size='2'><b>Usuario:</b> \t$usuario</font><br><hr>";
$msg .= "<font face='Verdana' size='1'><b>A sua empresa esta recebendo as comunicacoes que ocorrem com a Xcomp via email ?</b> \t$p2</font><br>";
$msg .= "<font face='Verdana' size='1'><b>O usuario ja acessou alguma vez as video aulas disponiveis no site ?</b> \t$p3</font><br>";
$msg .= "<font face='Verdana' size='1'><b>Caso sim no item 3, As video aulas estao atendendo as suas necessidades ?</b> \t$p4</font><br>";
$msg .= "<font face='Verdana' size='1'><b>O manual de uso do sistema esta claro o suficiente para resolver a sua necessidade ?</b> \t$p5</font><br>";
$msg .= "<font face='Verdana' size='1'><b>As requisicoes de suporte tecnico estao sendo feitos com rapidez ( dentro das 48 horas determinadas em contrato ) ?</b> \t$p6</font><br>";
$msg .= "<font face='Verdana' size='1'><b>O suporte tecnico esta sendo feito com clareza e objetividade ?</b> \t$p7</font><br>";
$msg .= "<font face='Verdana' size='1'><b>A sua empresa utiliza os relatórios de contas a pagar ?</b> \t$p9</font><br>";
$msg .= "<font face='Verdana' size='1'><b>A sua empresa utiliza os relatórios de contas a receber ?</b> \t$p10</font><br>";
$msg .= "<font face='Verdana' size='1'><b>A sua empresa utiliza os relatorios de pedido de compras ?</b> \t$p11</font><br>";
$msg .= "<font face='Verdana' size='1'><b>A sua empresa utiliza o relatorio que demonstra os problemas detectados no recebimento de mercadorias para analisar a situacao do fornecedor ?</b> \t$p12</font><br>";
$msg .= "<font face='Verdana' size='1'><b>A sua empresa utiliza os relatorios de pedido de vendas ?</b> \t$p13</font><br>";
$msg .= "<font face='Verdana' size='1'><b>A sua empresa utiliza o relatorio que demonstra os clientes que nao estao comprando em sua empresa para fazer analise de vendas ?</b> \t$p14</font><br>";
$msg .= "<font face='Verdana' size='1'><b>Descreva abaixo o que gostaria que fosse melhorado/aplimorado na Xcomp :<font size="1"><em><strong> </strong></em></font></b> \t$p15</font><br>";
$msg .= "<font face='Verdana' size='1'><b>O que gostaria de receber de informacao semanal da Xcomp : <font size="1"><em><strong> </strong></em></font></b> \t$p16</font><br>";

$mensagem     = "$msg";
$remetente    = "info@xcompbrasil.com.br";
$destinatario = "suporte@xcompbrasil.com.br";
$assunto      = "Questionario n.1 de 2010 para Xcomp";
$headers      = "From: ".$remetente."\nContent-type: text/html"; # o 'text/html' E o tipo mime da mensagem

if(!mail($destinatario,$assunto,$mensagem,$headers)){
print "falha no envio da mensagem";
} else {echo "<script>window.location.href='index.php'</script>";
//echo "Formulario enviado com sucesso";
}
?>

Alguem pode me ajudar ?

 

abs a todos e feliz 2010

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já checou se os campos chegam no script corretamente? (antes de enviar o e-mail).

 

Basta dar um echo $campo;, ou mesmo echo $mensagem; pra ver como a sua mensagem está saindo do script. Assim você tem certeza que o erro está no envio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já checou se os campos chegam no script corretamente? (antes de enviar o e-mail).

 

Basta dar um echo $campo;, ou mesmo echo $mensagem; pra ver como a sua mensagem está saindo do script. Assim você tem certeza que o erro está no envio.

 

Sim, ja fiz isso e os campos estao sendo preenchidos no script corretamente

tambem verifiquei o envio do questionario sem os campos 15 e 16 ( multi-linhas ) e estao ok

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como disse o Shwa, você deve ter certeza que o script está capturando os valores desses campos antes de enviar o e-mail. Às vezes até o name da caixa de texto pode estar diferente do que você está capturando com o PHP.

 

Sobre a "compactacao TRIM" que você se referiu, não sei se é isso, mas tem uma função do PHP que se chama trim e ela serve para retirar espaços da string.

 

$texto = " este é o texto 	";
$texto_sem_espaco = trim($texto); 

Veja mais em http://www.php.net/m...nction.trim.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, não me veio nada em mente agora, mas julgando que a única diferença entre um campo textarea e um textfield é a quebra de linha, tente substituí-las com nl2br( $seucampo ) (não que isso interfira no envio...).

 

No mais, faça alguns testes tentando enviar textos com uma só linha, substitua textfields atuais por textareas, enfim, debugue até que alguém que já tenha se deparado com o problema apareça :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como disse o Shwa, você deve ter certeza que o script está capturando os valores desses campos antes de enviar o e-mail. Às vezes até o name da caixa de texto pode estar diferente do que você está capturando com o PHP.

 

Sobre a "compactacao TRIM" que você se referiu, não sei se é isso, mas tem uma função do PHP que se chama trim e ela serve para retirar espaços da string.

 

$texto = " este é o texto 	";
$texto_sem_espaco = trim($texto); 

Veja mais em http://www.php.net/m...nction.trim.php

 

Eu testei os campos com o trim e notei que os 2 campos multi-linha nao aparecem no echo, é como se nao existisse informacao.

 

Bom, não me veio nada em mente agora, mas julgando que a única diferença entre um campo textarea e um textfield é a quebra de linha, tente substituí-las com nl2br( $seucampo ) (não que isso interfira no envio...).

 

No mais, faça alguns testes tentando enviar textos com uma só linha, substitua textfields atuais por textareas, enfim, debugue até que alguém que já tenha se deparado com o problema apareça :P

 

Voltei como estava antes o script e agora aparece o seguinte erro :

 

Parse error: syntax error, unexpected T_LNUMBER in /home/xcompbrasi/public_html/enviar_questionario1.php on line 41

Compartilhar este post


Link para o post
Compartilhar em outros sites

O trim apenas retira os espaços, caso haja, nos início e no final da string. Seria o caso de você usar o trim para, após conseguir exibir o conteúdo da textarea, retirar eventuais espaços.

 

Você já tentou dar um echo no nome do campo da textarea?

 

Se a textarea é algo como <textarea name="mensagem" rows="5"></textarea>, tente

 

$campo_textarea = $_POST['mensagem']; echo $campo_textarea;

e veja se mostra o que tem dentro da caixa de texto. Se mostrar, teoricamente é só você enviar a variável que dá certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O trim apenas retira os espaços, caso haja, nos início e no final da string. Seria o caso de você usar o trim para, após conseguir exibir o conteúdo da textarea, retirar eventuais espaços.

 

Você já tentou dar um echo no nome do campo da textarea?

 

Se a textarea é algo como <textarea name="mensagem" rows="5"></textarea>, tente

 

$campo_textarea = $_POST['mensagem']; echo $campo_textarea;

e veja se mostra o que tem dentro da caixa de texto. Se mostrar, teoricamente é só você enviar a variável que dá certo.

 

Fiz o teste o o echo esta mostrando o conteudo da variavel corretamente, o erro que esta aparecendo é em :

 

$msg .= "<font face='Verdana' size='1'><b>Descreva abaixo o que gostaria que fosse melhorado/aplimorado na Xcomp :<font size="1"><em></font></b> \t$p15</font><br>";

 

e aparece a seguinte mensagem :

 

Parse error: syntax error, unexpected T_LNUMBER in /home/xcompbrasi/public_html/enviar_questionario1.php on line 39

 

Existe alguma quantidade maxima de campos que podem ser enviados por um formulario ?

 

Alguma outra dica ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

$msg .= "<font face='Verdana' size='1'><b>Descreva abaixo o que gostaria que fosse melhorado/aplimorado na Xcomp :<font size="1"><em></font></b> \t$p15</font><br>";

 

Aspas duplas no meio de strings declaradas com aspas duplas precisam ser escapadas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$msg .= "<font face='Verdana' size='1'><b>Descreva abaixo o que gostaria que fosse melhorado/aplimorado na Xcomp :<font size="1"><em></font></b> \t$p15</font><br>";

 

Aspas duplas no meio de strings declaradas com aspas duplas precisam ser escapadas.

 

O problema realmente parece estar na confusão enter aspas simples e aspas duplas não escapadas. Sugiro que use CSS para formatar. Seria algo como:

 

<?php 
 $msg .= "<div style=\"font-family:Verdana, Arial, Helvetica, sans-serif; size:12px; font-weight:bold\">";
 $msg .= "Descreva abaixo o que gostaria que fosse melhorado/aprimorado na Xcomp: " . "<br />" . $p15;
 $msg .= "Outra pergunta" . "<br />";
 $msg .= "Outra pergunta";
 $msg .= "</div>";	 
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe alguma quantidade maxima de campos que podem ser enviados por um formulario ?

Não posso te dar certeza, mas acredito que não há limites, exceto o uso da memória do servidor com a ocupação das variáveis, mas tem que ser muitos campos para saturar a memória, por menor que seja.

Sempre enviei vários sem problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$msg .= "<font face='Verdana' size='1'><b>Descreva abaixo o que gostaria que fosse melhorado/aplimorado na Xcomp :<font size="1"><em></font></b> \t$p15</font><br>";

 

Aspas duplas no meio de strings declaradas com aspas duplas precisam ser escapadas.

 

Obrigado por indicar o caminho da solucao, mas acabei nao entendendo a forma tecnica que você escreveu e quando li a resposta do Renato me fez sentido a solucao

 

Obrigado pela ajuda

 

 

$msg .= "<font face='Verdana' size='1'><b>Descreva abaixo o que gostaria que fosse melhorado/aplimorado na Xcomp :<font size="1"><em></font></b> \t$p15</font><br>";

 

Aspas duplas no meio de strings declaradas com aspas duplas precisam ser escapadas.

 

O problema realmente parece estar na confusão enter aspas simples e aspas duplas não escapadas. Sugiro que use CSS para formatar. Seria algo como:

 

<?php 
 $msg .= "<div style=\"font-family:Verdana, Arial, Helvetica, sans-serif; size:12px; font-weight:bold\">";
 $msg .= "Descreva abaixo o que gostaria que fosse melhorado/aprimorado na Xcomp: " . "<br />" . $p15;
 $msg .= "Outra pergunta" . "<br />";
 $msg .= "Outra pergunta";
 $msg .= "</div>";	 
?>

Obrigado pela ajuda, a sua solucao resolveu meu problema, so me basta agora descobrir como deixar tudo com o mesmo tamanho de fonte e letra mas isso nao sera problema.

 

abs e muito obrigado

 

Existe alguma quantidade maxima de campos que podem ser enviados por um formulario ?

Não posso te dar certeza, mas acredito que não há limites, exceto o uso da memória do servidor com a ocupação das variáveis, mas tem que ser muitos campos para saturar a memória, por menor que seja.

Sempre enviei vários sem problema.

 

Eu imaginava que o limite de campos seriam ate uns 250 no máximo porque em VFP existe uma limitacao em relacao a relatorios.

 

obrigado por ajudar

 

Agora preciso colocar uma mensagem que informe ao usuario que o email foi enviado e depois de uns 3 segundos vá direto para o index da paginna mas isso em faço em outro post kkkk

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.