sacofrito 0 Denunciar post Postado Abril 17, 2012 Ola galera, estou precisando retornar de um formulario, varios campos com o mesmo name, mas nao esta retornando a mesma coisa. Segue como estou fazendo. HTML <label for="produto">Produto</label><br/> <select name="produto" id="produto"> <option></option> <? // POPULA SELECT unset($idprodutos,$descricao); $rows=$db->select('select idprodutos, descricao from produtos order by descricao'); if ($rows >= 0){ for ($x = 0 ; $x <= $rows; $x++){ echo "<option value=\"" . $idprodutos["$x"] . "\">" . strtoupper($descricao["$x"]) . " </option>"; } } ?> </select><br/> <label for="qtd">Qtd</label><br/> <input type="text" name="qtd" id="qtd"/><br/> <label for="preco">Preço Custo</label><br/> <input type="text" name="preco" id="preco" /> <br/> <label for="produto">Produto</label><br/> <select name="produto" id="produto"> <option></option> <? // POPULA SELECT unset($idprodutos,$descricao); $rows=$db->select('select idprodutos, descricao from produtos order by descricao'); if ($rows >= 0){ for ($x = 0 ; $x <= $rows; $x++){ echo "<option value=\"" . $idprodutos["$x"] . "\">" . strtoupper($descricao["$x"]) . " </option>"; } } ?> </select><br/> <label for="qtd">Qtd</label><br/> <input type="text" name="qtd" id="qtd"/><br/> <label for="preco">Preço Custo</label><br/> <input type="text" name="preco" id="preco" /> <br/> PHP if ($rows >= 0){ $x = 0; /* if(is_array($_POST['produto'])){ echo "é array"; }else{ echo "nao é"; } */ echo $_POST['produto']; foreach($_POST['produto'] as $prods){ $db->insert('entrada_itens', "identrada,id_produto,vl_compra,qtd,item,id_usuario","$identrada,$prods,$preco[$x],$qtd[$x],$x+1,$iduser"); } } Acabei de lembrar a solução. Basta colocar <input type="text" name="produto[]"> Faltou o '[]' no fim do nome. Podem fechar o tópico Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Abril 17, 2012 Se for o input, sim, há (nunca testei com select). Você terá de definir o name do input como se fosse um vetor, assim: <input type="text" name="produto[]" value="Produto 1" /> <input type="text" name="produto[]" value="Produto 2" /> <input type="text" name="produto[]" value="Produto 3" /> já no envio por post, você pode iterá-lo: $produtos = $_POST['produto']; foreach( $produtos AS $produto ) { echo $pruduto.'<br />'; } Você também pode definir as chaves do vetor... assim: <input type="text" name="produto[1]" value="Produto 1" /> <input type="text" name="produto[5]" value="Produto 2" /> <input type="text" name="produto[10]" value="Produto 3" /> Quando você for imprimir, pode ser feito assim: já no envio por post, você pode iterá-lo: $produtos = $_POST['produto']; foreach( $produtos AS $key => $produto ) { echo $pruduto.'<br />'; } ou já no envio por post, você pode iterá-lo: $produtos = $_POST['produto']; echo $produto[5]; O uso de chave, para o vetor, é interessante quando já há um id cadastrado no banco, assim não se faz a necessidade dois inputs, um para o nome do produto e outro para o id dele. Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Abril 17, 2012 Complementando a dica do Gabriel: Você também pode trabalhar com todos os dados de um produto na forma de um vetor: <!-- produto 1 --> <input type="text" name="produto[0][nome]" value="nome do produto" /> <input type="text" name="produto[0][valor]" value="valor do produto" /> <input type="text" name="produto[0][codigo]" value="codigo do produto" /> <!-- produto 2 --> <input type="text" name="produto[1][nome]" value="nome do produto" /> <input type="text" name="produto[1][valor]" value="valor do produto" /> <input type="text" name="produto[1][codigo]" value="codigo do produto" /> <!-- produto 3 --> <input type="text" name="produto[2][nome]" value="nome do produto" /> <input type="text" name="produto[2][valor]" value="valor do produto" /> <input type="text" name="produto[2][codigo]" value="codigo do produto" /> Assim, quando você for pegar pelo PHP: if(!empty($_POST['produto']) && is_array($_POST['produto'])){ foreach($_POST['produto'] as $item) { echo $item['nome'], ' com valor ', $item['valor'], ' e codigo ', $item['codigo'], '<br />', PHP_EOL; } } @braços e fique com Deus! Compartilhar este post Link para o post Compartilhar em outros sites
Walter Chilomer 1 Denunciar post Postado Março 8, 2016 Gabriel, Fiz as seguintes implementações: <?php echo $def[aca_item_anal_def];?> <input type="hidden" name="def[0][]" value="nome_def" /> <input type="hidden" name="def[0][]" value="def_detec" /> <input type="hidden" name="def[0][]" value="def_res" /> foreach($_POST['def'] as $key => $data) { printf( "Defeito: %s \n Quant. Defeitos: %s \n Resultado: %s \n", $data, $_POST['nome_def'][$key], $_POST['def_detec'][$key], $_POST['def_res'][$key] ); } SAÍDA: Defeito: Array Quant. Defeitos: Resultado: ---------------------------------------------------------------------------------------------------- <input type="hidden" name="def[0][]" value="nome_def" /> <input type="text" name="def[0[[]" size="4" maxlength="2" /> <input type="text" name="def[0][]" size="10" maxlength="20" /> foreach($_POST['def'] as $key => $data) { printf( "Defeito: %s \n Quant. Defeitos: %s \n Resultado: %s \n", $data, $_POST['ao_nome_def'][$key], $_POST['ao_def_detec'][$key], $_POST['ao_def_res'][$key] ); } SAÍDA: Defeito: Array Quant. Defeitos: Resultado: Defeito: 5 Quant. Defeitos: Resultado: -------------------------------------------------------------------------------------------------------------- <input type="hidden" name="def[0][]" value="nome_def" /> <input type="text" name="def[0[[]" size="4" maxlength="2" /> <input type="text" name="def[0][]" size="10" maxlength="20" /> $item = $_POST['def'][0]; foreach ($item AS $data){ echo $data\n; } SAÍDA: 2 APROVADO 0 APROVADO 5 REPROVADO 8 REPROVADO ------------------------------------------------------------------------------- SAÍDA CORRETA: DESVIO DE COR 2 APROVADO PESO FORA DOS LIMITES 0 APROVADO CODIFICAÇÃO INCOMPLETA 5 REPROVADO SUJEIRA EXTERNA REMOVIVEL 8 REPROVADO --------------------------------------------------------------------------------- Então, Entendi o que vc quis dizer. Como vc pode notar, os input hidden não retornam nada. Os input text, retornam alguma coisa, mas aqui é fácil de arrumar e deixar Ok. Importante lembrar que a variavel 'aca_item_anal_def' vem de uma tabela pelo SELECT.. O grande problema, que eu estou vendo é passar o valor dos input hidden para array. Obrigado Gabriel e fique bem. Compartilhar este post Link para o post Compartilhar em outros sites
romario@seg 0 Denunciar post Postado Maio 20, 2017 Em 2012-4-17 at 10:34, hufersil disse: Em 2012-4-17 at 10:34, hufersil disse: Complementando a dica do Gabriel: Você também pode trabalhar com todos os dados de um produto na forma de um vetor: <!-- produto 1 --> <input type="text" name="produto[0][nome]" value="nome do produto" /> <input type="text" name="produto[0][valor]" value="valor do produto" /> <input type="text" name="produto[0][codigo]" value="codigo do produto" /> <!-- produto 2 --> <input type="text" name="produto[1][nome]" value="nome do produto" /> <input type="text" name="produto[1][valor]" value="valor do produto" /> <input type="text" name="produto[1][codigo]" value="codigo do produto" /> <!-- produto 3 --> <input type="text" name="produto[2][nome]" value="nome do produto" /> <input type="text" name="produto[2][valor]" value="valor do produto" /> <input type="text" name="produto[2][codigo]" value="codigo do produto" /> Assim, quando você for pegar pelo PHP: if(!empty($_POST['produto']) && is_array($_POST['produto'])){ foreach($_POST['produto'] as $item) { echo $item['nome'], ' com valor ', $item['valor'], ' e codigo ', $item['codigo'], '<br />', PHP_EOL; } } @braços e fique com Deus! olá amigo o meu formulario se encaixa nesse exemplo que postou name=data['ClientesEndereco'][0]['nome_tipo']; name=data['ClientesEndereco'][0]['cep']; name=data['ClientesEndereco'][0]['logradouro']; name=data['ClientesEndereco'][0]['numero']; name=data['ClientesEndereco'][0]['complemento']; name=data['ClientesEndereco'][0]['bairro']; name=data['ClientesEndereco'][0]['codigo_cidade']; name=data['ClientesEndereco'][0]['nome_cidade']; name=data['ClientesEndereco'][0]['estado']; mas quando coloco: if(!empty($_POST['data']) && is_array($_POST['data'])){ foreach($_POST['data'] as $item){ echo $item['nome_tipo'], $item['cep'], $item['logradouro'], $item['numero'], $item['complemento'],$item['bairro'], PHP_EOL; } } dá erro da index indefinida ...onde estou errando, como faço ? Compartilhar este post Link para o post Compartilhar em outros sites
DCarus 0 Denunciar post Postado Agosto 4, 2017 Em 20/05/2017 at 15:14, romario@seg disse: olá amigo o meu formulario se encaixa nesse exemplo que postou name=data['ClientesEndereco'][0]['nome_tipo']; name=data['ClientesEndereco'][0]['cep']; name=data['ClientesEndereco'][0]['logradouro']; name=data['ClientesEndereco'][0]['numero']; name=data['ClientesEndereco'][0]['complemento']; name=data['ClientesEndereco'][0]['bairro']; name=data['ClientesEndereco'][0]['codigo_cidade']; name=data['ClientesEndereco'][0]['nome_cidade']; name=data['ClientesEndereco'][0]['estado']; mas quando coloco: if(!empty($_POST['data']) && is_array($_POST['data'])){ foreach($_POST['data'] as $item){ echo $item['nome_tipo'], $item['cep'], $item['logradouro'], $item['numero'], $item['complemento'],$item['bairro'], PHP_EOL; } } dá erro da index indefinida ...onde estou errando, como faço ? Eu creio que o problema esta nas aspas, usa sem as aspas no data['ClientesEndereco'][0]['estado'] vai ficar data[ClientesEndereco][0][estado]se nao der certo remove esse data e muda para da seguinte forma: ClientesEndereco[0][estado] que dai no teu exemplo ficaria assim: name=ClientesEndereco[0][estado]; Compartilhar este post Link para o post Compartilhar em outros sites