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

Dúvida Array


rafaelpampoch

Pergunta

Boa tarde a todos!

Estou sofrendo para conseguir fazer um array e gravar no banco... permitam-me explicar-me melhor:

Tenho um formulário para criação de orçamentos, e nele existe uma área onde o usuário pode adicionar itens ao orçamento dinamicamente. Esta adição está sendo feita por javascript, funcionando 100%, e cada item do orçamento é composto de vários campos: descrição, condição, valor, etc...

Como esses campos são inseridos dinamicamente e podem variar em quantidade, acredito que não haja outra forma de guardá-los no banco senão em forma de arrays.

formulário:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
&lt;script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>

&lt;script type="text/javascript">
$(document).ready(function() {

$('.add').click(function(){
var id = parseInt($('#tabelaItens > tbody tr:last input:first').val()) + parseInt(1);
$('#tabelaItens > tbody').append('<tr>\n                <td><input type="text" class="text-input" name="item[]" id="item[]" value="'+id+'" size="4"></td>\n             <td><input type="text" class="text-input" id="descricao[]" size="50"></td>\n            <td><input type="text" class="text-input" id="condicao[]" size="8"></td>\n              <td><input type="text" class="text-input" id="valor[]" size="8"></td>\n         <td><input type="text" class="text-input" id="desconto[]" size="8"></td>\n              <td><input type="text" class="text-input" id="total[]" size="8"></td>\n         <td> </td>\n</tr>\n');
return false;
});

});
</script>
</head>

<body>

<form action="teste-add-2.php" method="post" enctype="multipart/form-data" id="cadastro">
<table width="100%" id="tabelaItens">
        <thead>
        <tr>
                <td width="40">Item</td>
                <td>Descrição</td>
                <td width="75">Cond. Pgto.</td>
                <td width="75">Vlr. Unit.</td>
                <td width="75">% Desc.</td>
                <td width="100">Total</td>
                <td width="50">Editar</td>
        </tr>
        </thead>
        <tbody>
        <tr>
                <td><input type="text" class="text-input" name="itens[item][]" value="1" size="4"></td>
                <td><input type="text" class="text-input" name="itens[descricao][]" size="50"></td>
                <td><input type="text" class="text-input" name="itens[condicao][]" size="8"></td>
                <td><input type="text" class="text-input" name="itens[valor][]" size="8"></td>
                <td><input type="text" class="text-input" name="itens[desconto][]" size="8"></td>
                <td><input type="text" class="text-input" name="itens[total][]" size="8"></td>
                <td> </td>
        </tr>
        </tbody>
</table>

<p><input class="button" value="Enviar" type="submit" tabindex="320"></p>

<p><a href="#" class="add">add</a></p>
</form>

</body>
</html>
Quando o usuário clica no botão add, é adicionada mais uma linha no final de tabela com os mesmos campos mostrados acima. Até aí tudo bem, o problema surge quando tento tratar esse dados na página que os recebe, colocando eles em arrays pra salvar no banco de dados... acaba aparecendo somente o primeiro item inserido... página add-2.php:
<?php
$valores = $_POST['itens'];

foreach($valores[item] as $key=>$value){

echo "Item: ".$value."<br/>";
echo "Descrição: ".$valores[descricao][$key]."<br/>";
echo "Condição: ".$valores[condicao][$key]."<br/>";
echo "Valor: ".$valores[valor][$key]."<br/>";
echo "Desconto: ".$valores[desconto][$key]."<br/>";
echo "Total: ".$valores[total][$key]."<br/>";

}
?>

Gostaria de saber se alguém conhece a forma correta de receber esses dados, para que seja possível gravar no banco...

Desde já agradeço a atenção de todos!

Muito obrigado!

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

já tentou assim:

em vez de foreach, tente colocar o for(), veja:

Obs: 6 é o número de campos

$valores = $_POST['itens'];

for($i = 0; $i < 6; $i++){

echo "Descrição: ".$valores[descricao][$i]."<br/>";

echo "Condição: ".$valores[condicao][$i]."<br/>";

......

}

abraços

Editado por Anarquista
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,9k
×
×
  • Criar Novo...