Jump to content
Suesana

erro na função FOREACH ao enviar encomenda para e-mail

Recommended Posts

Suesana

Boas, tenho 1 loja on-line e a parte de enviar encomenda para o e-mail esta assim:

<?php
if($_GET['funcao']==finaliza){
$headers = "MIME-Version: 1.1\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "From: ".$_POST['email']."\n";
$headers .= "Reply-To: ".$_POST['email']."\n";
$headers .= "Return-path: ".$_POST['email']."\n";
$modelo = "
<table border='0px' style='text-align:center; '>
<tr height='5px'></tr>

<tr></tr>
<tr>
<td width='200'><b>Nome do Produto</b></td>
<td width='79'><b>Quantidade</b></td>
<td width='75'><b>Preço</b></td>
<td width='90'><b>Subtotal</b></td>

</tr>
"foreach ($_SESSION['carrinho'] as $id => $qtd){
$sql = 'SELECT * FROM produtos WHERE id= '$id'';
$sql = mysql_query($sql) or die (mysql_error());
$linha = mysql_fetch_assoc($sql);

$nome_produto = $linha['nome_produto'];
$preco = number_format ($linha ['preco'], 2, ',', '.');
$sub = number_format ($linha ['preco'] * $qtd, 2, ',', '.');

$total += $sub;"

"echo "<tr>
<td> ".$nome_produto." </td>
<td> ".$qtd." </td>
<td> ".$preco." €</td>
<td> ".$sub." € </td>
</tr>';"
}
$total = number_format ($total, 2, ',', '.');
echo "<tr></tr><tr>
<td colspan ='3'></td>
<td><b>Total</b></td>
<td> ".$total." € </td>
</tr><tr></tr>';

<tr>
</tr>

<tr height='15px'></tr>

</table>

<br /><br /><br />
<b>Dados para envio:</b> <br /><br />
Nome: ".$_POST['nome']."<br />
Morada: ".$_POST['morada']."<br />
Código Postal: ".$_POST['codigo_postal']."<br />
Localidade: ".$_POST['localidade']."<br />
Telefone: ".$_POST['telefone']."<br />
E-mail: ".$_POST['email']."<br />
<br /><br /><br />
<b>Observações:</b> <br /><br />
".$_POST['observacoes']"";
$titulo = "Encomenda - Baby Shop";
//mail($emailsender,$titulo,$modelo,$headers);
mail("mail@hotmail.com",utf8_decode($titulo),$modelo,$headers);
mail($_POST['email'],utf8_decode($titulo),$modelo,$headers);

echo "<META HTTP-Equiv=REFRESH CONTENT='0; url=index_clientes.php'>
<script type=\"text/javascript\">
alert(\"A sua encomenda foi enviada com sucesso.\");
</script>";

}?>

acontece que me dá este erro:

Parse error: syntax error, unexpected T_FOREACH in C:\xampp\htdocs\babyshop\clientes\finalizar_encomenda.php on line 321

é possível dizerem-me sff o que está mal?

Share this post


Link to post
Share on other sites
softklin

No foreach que tens aí, falta fechar a instrução anterior (echo) com um ;.

";foreach ($_SESSION['carrinho'] as $id => $qtd){

Depois mais abaixo, tens outro erro:

$total += $sub;"

"echo "<tr>

deveria ser:

$total += $sub;

echo "<tr>

E lá em cima, na 2ª linha, finaliza é uma constante? Se não for, tens de a colocar entre aspas, assim "finaliza".


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
Suesana

";foreach ($_SESSION['carrinho'] as $id => $qtd){

Já coloquei a passou a dar este erro (mas o ; esta a fechar que echo??):

Parse error: syntax error, unexpected T_VARIABLE in C:\xampp\htdocs\babyshop\clientes\finalizar_encomenda.php on line 322

que é na linha abaixo á do foreach

O finaliza é porque eu no formulário coloquei: finalizar_encomenda.php?funcao=finaliza

Share this post


Link to post
Share on other sites
softklin

Enganei-me, ele não está a fechar o echo, mas sim a declaração da variável modelo. Mas fica resolvido na mesma.

O erro que te está a dar agora é de usares plicas como caractere de escape. Na linha seguinte:

$sql = 'SELECT * FROM produtos WHERE id= '$id'';

troca por aspas, por exemplo:

$sql = "SELECT * FROM produtos WHERE id= '$id'";

Assim podes usar as plicas e a variável dentro da string.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
Suesana

Obrigada pela ajuda,

Agora aparece erro nesta linha

$preco        = number_format ($linha ['preco'], 2, ',', '.');

Parse error: syntax error, unexpected '}', expecting ',' or ';' in C:\xampp\htdocs\babyshop\clientes\finalizar_encomenda.php on line 338

Share this post


Link to post
Share on other sites
softklin

Vê na linha anterior, não estás a fechar a o echo: tens lá o ; mas tem de estar fora da string, no fim da instrução.

Tenta analisar com mais cuidado as mensagens de erro que te são dadas. Tudo o que estou a fazer é olhar para o código, não só para a linha em que tens o erro, mas também para a anterior, à procura de instruções mal fechadas, ciclos mal fechados, trocas de aspas com plicas, etc. Se vires o código com cuidado, num editor que suporte syntax highlight (notepad++, por exemplo), reparas mais facilmente onde estão os erros.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
softklin

Tens de fechar o echo com ;, ou seja, onde tens

</tr>';"
}
$total = number_format ($total, 2, ',', '.');

deves ter

</tr>';";
}
$total = number_format ($total, 2, ',', '.');


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
Suesana

Obrigada, eu estou a mais de uma semana 8 h por dia a ver se consigo resolver isto e ate agora não consegui, tenho mesmo azar agora esta a dar este erro:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in C:\xampp\htdocs\babyshop\clientes\finalizar_encomenda.php on line 363

a linha 363 é esta:

".$_POST['observacoes']"";

desculpe aserio

Share this post


Link to post
Share on other sites
brunoais

Falta o .


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
Suesana

Assim:

".$_POST.['observacoes']"";

?

é que coloquei e deu este erro

Parse error: syntax error, unexpected '[' in C:\xampp\htdocs\babyshop\clientes\finalizar_encomenda.php on line 363

Share this post


Link to post
Share on other sites
scorch

É o ponto que está mal.

".$_POST['observacoes']."";


PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
Suesana

Obrigada, ja não dá erro, mas sabe-me dizer porque é que recebo um email só com isto:

Nome do Produto Quantidade Preço Subtotal

Deveria estar a receber um email com os dados da encomenda e com uma coisa tipo isto:

Dados para envio:

Nome: Susana

Morada: Rua da Susana

Código Postal: 5989-696

Localidade: Porto

Telefone: 962569874

E-mail: mail@hotmail.com

Observações:

dfcv

Share this post


Link to post
Share on other sites
bLACKLOTUS90

Há pessoal que têm a moda de "botar" paki código sabe-se lá de onde e esperam que solucionem o problema. lol

Pessoalmente, eu não ajudo pessoas que nem sabem ver os problemas de sintaxe. Acho um insulto. Mas isso sou eu...

Take care  👎


# Catholic programmingif(!defined('GOD')) die();

Share this post


Link to post
Share on other sites
brunoais

Para aprender é sempre complicado usar código feito.

Para aprenderes devias de usar tutorials e não código feito.

Experimenta procurar por tutoriais de PHP na internet, de preferência q tenham sido feitos ou atualizados depois de 2010 (em 2010 ou 2011)


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
Suesana

aquele link é um tutorial só que não está a explicar como se envia a encomenda para o email e eu precisava de saber isso com muita urgencia por isso é que estou a pedir ajuda a quem tiver disponibilidade e vontade de me ajudar

Share this post


Link to post
Share on other sites
brunoais

o teu problema é do HTML do e-mail. O resto está correto.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
Suesana

mas é possível ajudar-me dizendo onde estou a errar? é que não encontro onde estou a errar

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.