DouGuAra 0 Denunciar post Postado Agosto 19, 2013 Coisa simples, estou criando um, formulário dinâmico, está tudo okay. O problema que que só consigo fazer array com dois campos, preciso na verdade de uns 7 campos. Mas ja tentei de todas as formas. Alguém poderia me dar um help. Grato. <?php if(isset($_POST)) { $array1=$_POST['hobby']; $array2=$_POST['hobby2']; //$array3=$_POST['hobby3']; //$array4=$_POST['hobby4']; //$array4=$_POST['hobby5']; //$array4=$_POST['hobby6']; //$array4=$_POST['hobby7']; foreach (array_combine($array1, $array2) as $name => $mobile) { //echo $name . ' ' . $mobile . '' . $array3 . '<br>'; echo $name . ' ' . $mobile . '<br>'; } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Jquery Duplicate Fields Submit Form</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script type="text/javascript" src="http://ajax.googleapis.com/ ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript" src="reCopy.js"></script> <script type="text/javascript"> $(function(){ var removeLink = ' <a class="remove" href="#" onclick="$(this).parent().slideUp(function(){ $(this).remove() }); return false">remove</a>'; $('a.add').relCopy({ append: removeLink}); }); </script> <style type="text/css"> body{ font-family:Arial, Helvetica, sans-serif; font-size:13px; } .remove {color:#cc0000} .input{ border: solid 1px #006699; padding:3px} </style> </head> <body> <form method="post" action=""> <p class="clone"> <input type="text" name="hobby[]" class='input'/> <input type="text" name="hobby2[]" class='input'/> <input type="text" name="hobby3[]" class='input'/> <input type="text" name="hobby4[]" class='input'/> <input type="text" name="hobby5[]" class='input'/> <input type="text" name="hobby6[]" class='input'/> <input type="text" name="hobby7[]" class='input'/> </p> <p><a href="#" class="add" rel=".clone">Adicionar</a></p> <input type="submit" value=" Submit " /> </form> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
dochipis 6 Denunciar post Postado Agosto 19, 2013 Se você quer todos os inputs ->hobby como array, faça assim: <input type="text" name="hobby[]" class='input'/> <input type="text" name="hobby[]" class='input'/> <input type="text" name="hobby[]" class='input'/> <input type="text" name="hobby[]" class='input'/> <input type="text" name="hobby[]" class='input'/> <input type="text" name="hobby[]" class='input'/> <input type="text" name="hobby[]" class='input'/> foreach ($_POST['hobby'] as $key => $value) { echo( $key. ' - '. $value); } Compartilhar este post Link para o post Compartilhar em outros sites
DouGuAra 0 Denunciar post Postado Agosto 19, 2013 dochipis, grato pela ajuda, mas como pode ver, são campos com nomes diferentes. A diferença está no 1-2, depois troco pelo nomes corretos, só pra simplificar. Na verdade será sete campo. Grato. Compartilhar este post Link para o post Compartilhar em outros sites
dochipis 6 Denunciar post Postado Agosto 19, 2013 Se são 7 campos diferentes para que coloca-los em um array? Qual a necessidade de fazer isso? Se for só para pegar os valores tente assim: foreach ($_POST as $nome => $valor ) { echo( $nome. ' - '. $valor ); } Compartilhar este post Link para o post Compartilhar em outros sites
DouGuAra 0 Denunciar post Postado Agosto 19, 2013 é que são 7 campos com nomes diferentes, roda ele pra vc ver, vou add no banco - hora, dia, mensagem1, autor, etc... Compartilhar este post Link para o post Compartilhar em outros sites
Dorian Neto 41 Denunciar post Postado Agosto 19, 2013 Cara, ta muito confuso sua dúvida... Eu concordo com o @dochipis, se são 7 campos diferentes, pq você quer armazená-los em um array ? Porque você não pega o array $_POST !? Compartilhar este post Link para o post Compartilhar em outros sites
DouGuAra 0 Denunciar post Postado Agosto 19, 2013 Estou trabalhando com chave, é um formulário que eu posso inserir vários formulários iguais ao mesmo tempo, não é apenas 1 form, mas pode ser 100 form Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Agosto 19, 2013 Tem um exemplo do formulário pra gente rodar e entender direito o que tá passando na sua cabeça? Compartilhar este post Link para o post Compartilhar em outros sites
DouGuAra 0 Denunciar post Postado Agosto 19, 2013 Tem sim, ta no código que coloquei acima! Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Agosto 19, 2013 O código que vocẽ colocou acima não aparece nada escrito. Só um monte de caixas em branco. O que eu tenho que escrever nelas pra funcionar? Meu navegador reclamou de um erro reCopy is not a function Eu sugiro que você releia o tutorial do plugin e entenda o que está fazendo. Na página oficial sugerem que você trabalhe da mesma forma que informaram aqui no fórum. Não existe esse negócio de campo1[], campo2[] e etc. Um teste bem simples e básico pra você entender como a coisa funciona <!DOCTYPE html> <html lang="pt_BR"> <head> <meta charset="utf-8" /> <title>Untitled Document</title> </head> <body> <form action="" method="post"> <p> <?php isset($_POST['hobby']) ? print_r($_POST['hobby']) : echo 'Você não informou nenhum hobby.'; ?> </p> <fieldset> <legend>Informe seus hobbies</legend> <ul> <li> <label for="hobby1"> <span>#1:</span> <input type="text" name="hobby[]" id="hobby1" /> </label> </li> <li> <label for="hobby2"> <span>#2:</span> <input type="text" name="hobby[]" id="hobby2" /> </label> </li> </ul> </fieldset> <p><button type="submit">Enviar</button></p> </form> </body> </html> Fica como lição de casa você implementar o plugin nessa bagunça que eu fiz aí em cima. Pq se até isso eu fizesse, só faltaria o backend. Compartilhar este post Link para o post Compartilhar em outros sites
DouGuAra 0 Denunciar post Postado Agosto 19, 2013 Evandro Oliveira, obrigado pela ajuda, mas o negócio pra mim vou simplificar o código que eu fiz. vamos lá <?php if(isset($_POST)) { $array1=$_POST['obs']; $array2=$_POST['telefone']; //$array3=$_POST['dados']; //$array4=$_POST['obs2']; //$array4=$_POST['valor']; //$array4=$_POST['NF']; //$array4=$_POST['qtd']; foreach (array_combine($array1, $array2) as $obs => $telefone) { //echo $obs . ' ' . $telefone . '' . $array3 . '<br>'; echo $obs . ' ' . $telefone . '<br>'; } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Jquery Duplicate Fields Submit Form</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script type="text/javascript" src="http://ajax.googleapis.com/ ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript" src="reCopy.js"></script> <script type="text/javascript"> $(function(){ var removeLink = ' <a class="remove" href="#" onclick="$(this).parent().slideUp(function(){ $(this).remove() }); return false">remove</a>'; $('a.add').relCopy({ append: removeLink}); }); </script> <style type="text/css"> body{ font-family:Arial, Helvetica, sans-serif; font-size:13px; } .remove {color:#cc0000} .input{ border: solid 1px #006699; padding:3px} </style> </head> <body> <form method="post" action=""> <p class="clone"> <input type="text" name="obs[]" class='input'/> <input type="text" name="telefone[]" class='input'/> <input type="text" name="dados[]" class='input'/> <input type="text" name="obs2[]" class='input'/> <input type="text" name="valor[]" class='input'/> <input type="text" name="NF[]" class='input'/> <input type="text" name="qtd[]" class='input'/> </p> <p><a href="#" class="add" rel=".clone">Adicionar</a></p> <input type="submit" value=" Submit " /> </form> </body> </html> O problema é que só consigo recuperar obs e telefone.. Vê agora se esclarece um pouco! Compartilhar este post Link para o post Compartilhar em outros sites
dochipis 6 Denunciar post Postado Agosto 19, 2013 Vamos lá de novo: <form method="post" action="<?php echo( $_SERVER['REQUEST_URI'] ); ?>"> <p class="clone"> <input type="text" name="campo[obs]" class='input'/> <input type="text" name="campo[telefone]" class='input'/> <input type="text" name="campo[dados]" class='input'/> <input type="text" name="campo[obs2]" class='input'/> <input type="text" name="campo[valor]" class='input'/> <input type="text" name="campo[NF]" class='input'/> <input type="text" name="campo[qtd]" class='input'/> </p> <p><a href="#" class="add" rel=".clone">Adicionar</a></p> <input type="submit" value=" Submit " /> </form> Para pegar os valores faça assim: $campos = implode(", ", array_keys( $_POST['campo' ]) ); $valores = implode(", ", array_values( $_POST['campo'] ) ); Compartilhar este post Link para o post Compartilhar em outros sites
DouGuAra 0 Denunciar post Postado Agosto 19, 2013 infelizmente assim pra mim não é possível. Eu vou ter vários forms. Compartilhar este post Link para o post Compartilhar em outros sites
dochipis 6 Denunciar post Postado Agosto 19, 2013 Você vai ter vários forms na mesma página? <p><a href="#" class="add" rel=".clone">Adicionar</a></p> O trecho acima adiciona um novo form ou um novo campo no formulário? Compartilhar este post Link para o post Compartilhar em outros sites
DouGuAra 0 Denunciar post Postado Agosto 19, 2013 Exato..... da um look aqui e baixa o exemplo.. http://www.9lessons.info/2010/04/jquery-duplicate-field-form-submit-with.html Compartilhar este post Link para o post Compartilhar em outros sites
Leozitho 81 Denunciar post Postado Agosto 19, 2013 Este link que você postou mostra como inserir vários campos e não vários formulários. Compartilhar este post Link para o post Compartilhar em outros sites
DouGuAra 0 Denunciar post Postado Agosto 19, 2013 Esse exemplo mostra como inserir 1 campo. Agora eu consigo inserir 2 campo.. Agora gostaria de saber como faço pra inserir 7 campos, só consigo trabalhar com 2 campos Compartilhar este post Link para o post Compartilhar em outros sites
Leozitho 81 Denunciar post Postado Agosto 19, 2013 Você disse que não poderia usar as soluções que os colegas apresentaram porque iria trabalhar com vários formulários quando na verdade você irá trabalhar com vários campos. Neste caso a solução apresentada no post #2 já resolve o seu problema, você precisa ter todos os campos com o mesmo nome, porém em forma de array (usando colchetes). Como o Evandro mencionou, o método relCopy não existe, eu pesquisei na API no jQuery e ele realmente não existe, talvez existisse em uma versão mais antiga, já que o post que você usou como base é de 2010 :seta: http://api.jquery.com/?s=relCopy Sugiro que você tente adaptar o seu código usando método clone. EDIT: Desculpe, agora que notei que você está usando um plugin com esse nome reCopy. Note o seguinte, o nome do arquivo JS que você está chamando é reCopy, e no seu código está relCopy. Talvez seja este o problema. Mas pelo o que eu entendi este plugin faz a mesma função do método clone que é nativo do jQuery, então o uso do plugin pode ser dispensado. EDIT 2: Aqui tem um exemplo de como adicionar o elemento dinamicamente usando somente jQuery, ele mostra inclusive como receber os dados no PHP :seta: Compartilhar este post Link para o post Compartilhar em outros sites
DouGuAra 0 Denunciar post Postado Agosto 19, 2013 Leozitho, obrigado pela atenção. Esse video faz a mesma coisa, o problema é que não consigo trabalhar com 3 ou mais campo....por causa fo foreach Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Agosto 19, 2013 array_combine faz de 2 em 2 arrays. ou vc faz vários array_combine, ou vc faz de uma forma melhor. Por exemplo, nomeando pelo grupo: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form action="" method="post"> <input type="text" name="data[group1][]" value="1.0" /><br /> <input type="text" name="data[group1][]" value="2.0" /><br /> <input type="text" name="data[group1][]" value="3.0" /><br /> <input type="text" name="data[group1][]" value="4.0" /><br /> <input type="text" name="data[group1][]" value="5.0" /><br /> <input type="text" name="data[group2][]" value="1.1" /><br /> <input type="text" name="data[group2][]" value="2.1" /><br /> <input type="text" name="data[group2][]" value="3.1" /><br /> <input type="text" name="data[group2][]" value="4.1" /><br /> <input type="text" name="data[group2][]" value="5.1" /><br /> <input type="submit" name="ok" value="ok" /> </form> <?php echo '<pre>'; foreach( $_POST['data'] AS $datas ) { var_dump( $datas ); } ?> </body> </html> saida: array(5) { [0]=> string(3) "1.0" [1]=> string(3) "2.0" [2]=> string(3) "3.0" [3]=> string(3) "4.0" [4]=> string(3) "5.0" } array(5) { [0]=> string(3) "1.1" [1]=> string(3) "2.1" [2]=> string(3) "3.1" [3]=> string(3) "4.1" [4]=> string(3) "5.1" } dessa forma não fica confuso Compartilhar este post Link para o post Compartilhar em outros sites