Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde, gente. Tudo bem?
É o seguinte: tenho um site com um formulário para fazer pedido de produtos. Tenho um input para colocar o nome do produto e outro para a quantidade. Tenho também um botão para adicionar novos campos de input para inserir mais produtos, isso é gerado por Javascript. Entendo que para passar isso para PHP eu preciso que esses campos sejam arrays, no HTML eu preparei o array para o PHP pegar os dados, mas por algum motivo essa função não está funcionando, ele só mostra o primeiro valor.
Código da página de solicitação de produto:
<script type="text/javascript">
function adiciona(){
tbl = document.getElementById("tabela")
var novaLinha = tbl.insertRow(-1);
var novaCelula;
novaCelula = novaLinha.insertCell(0)
novaCelula = novaLinha.insertCell(1);
novaCelula.innerHTML = "<input name='descricao[]' type='text' size='35' style='border:1px solid black;'>";
novaCelula = novaLinha.insertCell(2);
novaCelula.align = "left";
novaCelula.innerHTML = "<input name='quanto[]' type='text' size='1' style='border:1px solid black;'>";
}
</script>
<table><tr><td></td><td class='subtitulotabela'>Descrição</td><td class='subtitulotabela'>Quantidade</td></tr><tr><td></td><td><input name='descricao[]' type='text' size='35' style='border:1px solid black;'></td><td><input name='quanto[]' type='text' size='1' style='border:1px solid black;'></td><td><a id="incluir" href="#" onclick='adiciona()'><img border="0" src="images/add.png" /></a></td></tr></table>
e o código do php que passa as informações por email (só a parte referente a ele):
$quanto = $_POST['quanto'];
foreach ($_POST['descricao'] as $outrosprodutos){
$corpo .= "<p>" . $outrosprodutos . " - " . $quanto . "</p>";
}Alaerte, obrigada, troquei o foreach por for, porém ainda só mostra o primeiro valor.
Acontece que quando se concatena uma variável ela precisa existir.
então o correto seria.
$quanto = $_POST['quanto'];
$corpo = '';
foreach ($_POST['descricao'] as $outrosprodutos){
$corpo .= "<p>" . $outrosprodutos . " - " . $quanto . "</p>";
}Consegui resolver refazendo a tabela, que estava dentro de outros dados, com isso o IE estava gerando os javascripts acima do loop, acho que por isso estava dando o erro. Gerei com for mesmo, apesar de o foreach também estar funcionando agora.
Muito obrigada aos dois. Problema resolvido. :)
Você deveria usar um FOR, para este caso seria melhor, veja:
for($i=0; $i < count($quanto ); $i++)
{