Ir para conteúdo
Fórum Script Brasil
  • 0

Enviar Resultado De Array Por E-mail


dev

Pergunta

Olá :rolleyes:

Montei um formulario em que listo os produtos de uma tabela usando while.

cria-se uma linha para cada produto, que, além de exibir o nome do produto, tem um input hidden com name=produto e value=$produto e tambem um checkbox para selecionar se deseja esse produto ou não.

O problema é que gera várias linhas (uma para cada produto) com o mesmo name=produto em todos os input hidden.

Por causa disso, após clicar em enviar, independente da seleção feita, aparece sempre um produto só na lista e sempre é o ultimo do formulario.

Como posso resolver isso??

Obrigada desde já.

abraços

Link para o comentário
Compartilhar em outros sites

17 respostass a esta questão

Posts Recomendados

  • 0

coloke assim

<INPUT NAME=hid[] VALUE="1" TYPE=hidden>

<INPUT NAME=nome[] VALUE="Item 1">

<INPUT NAME=check[]>

<INPUT NAME=hid[] VALUE="2" TYPE=hidden>

<INPUT NAME=nome[] VALUE="Item 2">

<INPUT NAME=check[]>

Então o php vai criar uma Array assim

hid[0] = "1";

hid[1] = "2";

Sako?

FLWS!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

Muito obrigada pela ajuda, mas não consegui resolver o problema ainda.

Fiz como vocês me orientaram, usando name=produto[], mas na página de resultado só paareceu escrito Array.

Vou postar o meu código, se vocês tiverem paciencia de conferir e me ajudar, agradeço muito.

Tirei os detalhes de fonte, tabela, etc pra não ficar tão grande.

$query = "SELECT * FROM lancamentos order by codigo asc ";

$res = mysql_query($query) or die("error: " . mysql_error());

$retorno = mysql_num_rows($res);

if ($retorno > 0) {

?>

<form name='form' method='post' action='ativalog.php?ac=cotar'>

<?while($array_usuario = mysql_fetch_array($res)) {?>

<tr bgcolor="ebebeb">

<input type="checkbox" name="sel" value="s"></td>

<td width="28%" height="25" bgcolor="#E9E9E9">

<input type="text" name="qtde[]"></td>

<td width="10%" height="25" bgcolor="#E9E9E9">

<?echo $array_usuario['codigo];?>

<input type="hidden" name="cod[]" value=<?echo $array_usuario['codigo];?>"></td>

<td width="20%" height="25" bgcolor="#E9E9E9">

<?echo $array_usuario['produto'];?>

<input type=hidden" name="desc[]" value="<?echo $array_usuario['produto];?>">

</td> </tr>

<?}

} ?>

<input type="submit" name="cotar" value="Enviar >>"></td></tr>

if ($_POST['sel'] == 's'){

$qtde = $_POST['qtde'];

$cod = $_POST['cod'];

$desc = $_POST['desc'];

}

echo $qtde $cod

?>

Link para o comentário
Compartilhar em outros sites

  • 0

A parte anterior já foi resolvida, mas estou usando o mesmo tópico para que possam entender o que está acontecendo, espero que não tenha problema...

Pois é, apareceu uma pedra bem no fim do caminho...

É o seguinte, estou usando as informações anteriores para alimentar o seguinte form:

<form method="POST" action="envia.php">

<tr>

<td><?echo $desc ?><input type="hidden" name="desc[]" value="<? echo $desc; ?>"></td>

<td><?echo $qtde ?><input type="hidden" name="qtde[]" value="<? echo $qtde; ?>">

</td></tr></form>

Até aí tudo bem, só que não estou conseguindo enviar a lista de ítens solicitados por email, o que ocorre é que está sendo enviado 1 e-mail para cada produto e não 1 e-mail com a lista de produtos:

$para = "meuemail@gmail.com";// aqui vai o email do cliente

$assunto = "Orçamento via Site";

$headers = "MIME-Version: 1.0\r\n";

$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

$headers .= "From: $email\r\n";

$headers .= "mensagem:

<html><body>

<br><br>

Nome: $nome <br>

E-mail: $email <br>

Orçamento solicitado:

Qtde - Produto: $qtde - $produto <br>

</html>";

mail($para,$assunto,$mensagem,$headers);

Muito obrigada pela atenção !!!

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

olá amiguinhos.

Beraldo, eu postei a dúvida, justamente por não saber qual era o problema, mas você não ajudou muito. Dá próxima vez, dá uma forcinha, tá bom? Sinta-se à vontade pra fazer isso agora ;)

Frenetico, agradeço muito pela sua ajuda.

Acho que avancei um pouquinho, mas o problema continua.

Agora o código está assim:

$qtde = $_POST['qtde'];

$desc = $_POST['desc'];

$i++;

if ($qtde != ""){

foreach($qtde as $qtde1){

echo $qtde1;}

foreach($desc as $desc1){

echo $desc1;}

}

Tem como utilizar o foreach para 2 ítens?

Algo do tipo:

foreach (($qtde as $qtde1) && ($desc as $desc1)) {

echo $qtde1 $desc1;

Também não sei como vou inserir no e-mail, pois do jeito que está, envia somente o último ítem da lista.

Pesquisei de novo agora cedo e já tentei um tanto de coisa, mas nada funcionou.

Por favor, podem me ajudar ?

Desde já, muuuiiito obrigada !

Abraços procês

Link para o comentário
Compartilhar em outros sites

  • 0

Você quer que quando alguém marca o chechbox e seleciona o que quer e depois envia-se essa lista de selecionados pro seu email??

fiz uma coisa aqui doida mais funcionou aqui:

extract($_POST);
unset($_POST['a']);
foreach ($_POST as $campo => $valor) {
   $msg .= "<br />" . ucfirst($campo) . " : <b>" . $valor . "</b>";
}

Esse você coloca no script do seu email

E no seu formulario ele vai procurar os checkbox selecionados até mesmo o textarea.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, pessoal.

Frenetico, agradeço muito por sua atenção e por sua ajuda.

Estava com problemas de conexão, por isso não respondi antes.

Bem, fiz o código como abaixo, mas não deu certo. O email vem vazio. Coloquei alguma coisa errada?

extract($_POST);

unset($_POST['a']);

foreach ($_POST as $campo => $valor) {

$para = "$email";

$assunto = "Orçamento via Site";

$headers = "MIME-Version: 1.0\r\n";

$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

$headers .= "From: $email\r\n";

$headers .= "mensagem:

<html><body>

$campo: $valor <br>

</html>";

}

mail($para,$assunto,$mensagem,$headers);

Aí tentei da seguinte forma:

tirei os checkbox, o ítem é enviado caso a quantidade seja diferente de "" (vazio).

O e-mail está vindo corretamente, o problema é que se preencho 3 ítens, vêm 4 e-mails, um com cada ítem e um com todos (acho que é isso, sei que vem um certo e os outros parciais).

Talvez seja algum errinho bobo...

$nome = $_POST['nome];

$email = $_POST['email'];

$uf = $_POST['uf'];

$mens = $_POST['mens'];

$para = "$email";// Observe a vírgula

$assunto = "Orçamento via Site";

$headers = "MIME-Version: 1.0\r\n";

$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

$headers .= "From: $email\r\n";

$headers .= "mensagem:

<html><body>

Nome: $nome <br>

E-mail: $email <br>

Estado: $uf <br>

Mensagem: $mens <br><br>

Orçamento solicitado:<br>

Qtde - Produto: <br>";

$i = 0;

while($i < count($_POST['qtde'])){

$qtde = $_POST['qtde'][$i];

$desc = $_POST['desc'][$i];

$i++;

if ($qtde != ""){

$headers .= "

$qtde - $desc <br>";

}

}

$headers .= "

</html>";

mail($para,$assunto,$mensagem,$headers);

Se puderem me ajudar com urgência, agradeço muito, pois agora estou atrasadíssima com a entrega dos trabalhos.

Obrigada mesmo.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, JCMPJ !

Fiz a alteração que você indicou, mas não mudou nada.

Não creio que seja esse o erro, pois uso o mesmo código em outras páginas e recebo os e-mails normalmente. O problema tá sendo mesmo conseguir listar todos os campos do while no email.

Mas obrigada pela atenção.

Continuo esperando que me ajudem.

abraços pro cês.

Link para o comentário
Compartilhar em outros sites

  • 0

<?php
if($_POST) {
$nome = $_POST['nome'];
$para = $_POST['email'];
$uf   = $_POST['uf'];
$mens = $_POST['mens'];
$FROM = "meuemail@minhaempresa.com.br";
$assunto  = "Orçamento via Site";
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: ".$FROM;
$mensagem = "
    <html>
    <body>
    <pre>
Nome:     ".$nome."
E-mail:   ".$para."
Estado:   ".$uf."
Mensagem: ".$mens."
    </pre>
    <table align=\"left\" border=\"2\">
    <tr><th colspan=\"3\">Orçamento solicitado</th></tr>
    <tr><th>Qtde</th><th>Código</th><th>Descrição</th></tr>\n"
;
$i = 0;
while( $i < count($_POST['qtde']) ) {
    if( is_numeric($_POST['qtde'][$i]) && (integer)$_POST['qtde'][$i] > 0 ) {
        $mensagem .= "<tr>\n";
        $mensagem .= "<td>".$_POST['qtde'][$i]."</td>\n";
        $mensagem .= "<td>".$_POST['cod'][$i] ."</td>\n";
        $mensagem .= "<td>".$_POST['desc'][$i]."</td>\n";
        $mensagem .= "</tr>\n";
    };
    $i++;
};
$mensagem .= "</table></body></html>";
$ENVIADO = mail($para, $assunto, $mensagem, $headers);
};
?>

:wacko:

Link para o comentário
Compartilhar em outros sites

  • 0

Nem acredito, JCMPJ. :P

Ficou demais ! Melhor do que eu imaginava. A tabela ficou muito legal.

Depois vou estudar melhor o código, pra aprender um pouquinho mais.

Já havia tentado uma porção de coisas e agora sei que não teria conseguido sozinha.

Olha, muito obrigada mesmo !!! :D

Abraços.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...