Videres 3 Denunciar post Postado Maio 15, 2013 Bom dia galerinha da maldade... Então, a minha bronca é a seguinte.. estou tentando criar inputs dinâmicos que serão adicionados de acordo com a necessidade do usuario consequentemente estou gerando novas tags name sempre que insiro um novo input. Gostaria de saber como faço para receber os valores dos inputs dinamicamente no php para inserir no banco? Se alguém ppuder me dar alguam orientação.. serei grato \o. Inputs dinamicos - Script: var cont_input = 0; var cont_label = 0; var cont_name = 0; function addInput(){ var labels = document.getElementsByTagName("label"); var maximo_inputs = 10; cont_input++; cont_label++; cont_name++; var label = document.createElement("label"); var input = document.createElement("input"); input.type = "text"; input.name = "teste"+cont_name; input.id = "add-input"+cont_input; label.id ="add-label"+cont_label; label.innerHTML = "Disciplina "+1; document.getElementById("content-form").appendChild(label); document.getElementById("content-form").appendChild(input); } function removeInput(){ var filho_input = document.getElementById("add-input"+cont_input); var filho_label = document.getElementById("add-label"+cont_label); cont_input--; cont_label--; cont_name--; document.getElementById("content-form").removeChild(filho_label); document.getElementById("content-form").removeChild(filho_input); } Desde já agradeço pela força.. caso encontre algo antes posto aqui.. abraço Compartilhar este post Link para o post Compartilhar em outros sites
Samuel Gomes_148425 19 Denunciar post Postado Maio 15, 2013 <html> <head> <title></title> <script LANGUAGE="javascript"> totals=0; function adiciona1() { totals++ tbl = document.getElementById("tabela1") var novaLinha = tbl.insertRow(-1); var novaCelula; if (totals%2==0) c1="F5E9EC"; else c1 = "#FBF6F7"; novaCelula = novaLinha.insertCell (0); novaCelula.align = "left"; novaCelula.style.backgroundColor = c1; novaCelula.style.height='10px'; //novaCelula.innerHTML = '<font size="3" color="blue">' + document.getElementById("vlrp").value + '</font>'; novaCelula.innerHTML = '<input type="text" name="vlrp[]" size="15" value="' + document.getElementById("vlrp").value + '" />'; novaCelula = novaLinha.insertCell (1); novaCelula.align = "left"; novaCelula.style.backgroundColor = c1; novaCelula.innerHTML = '<input type="text" name="data"[] size="15" value="' + document.getElementById("data").value + '" />'; novaCelula = novaLinha.insertCell (2); novaCelula.align = "left"; novaCelula.style.backgroundColor = c1; novaCelula.innerHTML = '<input type="text" name="nome[]" size="15" value="' + document.getElementById("nome").value + '" />'; } </script> </head> <body> <form action="incluir_lancamento.php" method="post"> <table id ="tabela1"> <tr> <th>Valor da parcela</th> <th>Vencimento</th> <th>Fornecedor</th> </tr> <tr> <td><input type="text" name="vlrp[]" id="vlrp" size="15" /></td> <td><input type="text" name="data[]" id="data" size="15" /></td> <td><input type="text" name="nome[]" id="nome" size="15" /></td> </tr> </table> <input type="button" id="incluir" value="Incluir" onclick="adiciona1()" /> <br> <input type="submit" value="Gravar" /> </form> </body> </html> No incluir_lancamento.php eu coloquei isso: if($_POST){ var_dump($_POST['vlrp']); } Veja se esse código te ajuda! Compartilhar este post Link para o post Compartilhar em outros sites
Videres 3 Denunciar post Postado Maio 15, 2013 Eae Samuel blz? Vlws pela força... A parte de adicionar e remover consigo resolver com o script q postei a cima... a bronca é tipo, cada input q insiro estou atribuindo um novo name (name1, name2, name3....), como eu n tenho uma quantidade de inputs determinada, eu gostaria de saber como posso ter ess controle no php. Seria algo parecido com, uma verificação para saber a quantidade de names q tenho e inserir no banco dinamicamente. Ex.: Verifiquei que foi gerado 10 names, Em seguida crio dinamicamente os valores $name1 = $_POST["name1"] $name2= $_POST["name2"] $name3 = $_POST["name3"] $name4 = $_POST["name4"] ...... E depois seria como faço para inserir no banco esses valores... *Isso tudo dinamicamente. Se eu tivess como inserir nos inputs o mesmo valor do name Ex.: name="teste" ao invés de name = "teste1", name= "teste2"... e no php tivesse alguma opção de transformar todos os valores dos meus inputs que tivessem o mesmo valor do name="teste" em array seria excelente! Mas n consigo encontrar nada que faça isso.. rssrrs Seria algo parecido com: $recebo_names = explode_array["teste"]; //esta errado oq eu fiz.. é só para ilustrar. =] assim teria: $recebo_names[0], $recebo_names[1] ... cada item desse terei um valor do input.. dai seria excelente.. só iria me esquentar como iria inserir dinamicamente com postgresql no banco esses valores adicionados. ^~ N sei s fui mto claro... e tb n sei se o que estou p ensando seria a forma + prática.. ehhehehe S puderem me sugerir um jeito melhor de resolver.. agradeço mto.. srrssr *s n vou ter q colocar um limitador para adicionar um novo input.. ahsuahuashuas dai posso chamar no meu php de 1 por 1... ex.: $name1 = $_POST["teste1"];, $name2 = $_POST["teste2"]; e assim por diante.. Vlws pela força \o Compartilhar este post Link para o post Compartilhar em outros sites
Samuel Gomes_148425 19 Denunciar post Postado Maio 15, 2013 Olha eu entendi + ou - Mas perceba que no meu scritp os inputs estão declarados com o name 'vlrp[]', ou seja, quando voce fizer um var_dump($_POST['vlrp']); Ele irá retornar um array para você Aí você pode usar as infinitas funções do php, para contar a quantidade de elementos do array e etc... Compartilhar este post Link para o post Compartilhar em outros sites
Videres 3 Denunciar post Postado Maio 15, 2013 Olha eu entendi + ou - Mas perceba que no meu scritp os inputs estão declarados com o name 'vlrp[]', ou seja, quando voce fizer um var_dump($_POST['vlrp']); Ele irá retornar um array para você Aí você pode usar as infinitas funções do php, para contar a quantidade de elementos do array e etc... Blz... vou tentar!!! N tinha percebido a prte final q c tinha colocado.. vlws Qualquer bronca ou solucao volto aqui. ^^ Compartilhar este post Link para o post Compartilhar em outros sites
Samuel Gomes_148425 19 Denunciar post Postado Maio 15, 2013 Ok, boa sorte! Se o problema for solucionado, lembre-se de marcar o tópico como resolvido!! Compartilhar este post Link para o post Compartilhar em outros sites
Videres 3 Denunciar post Postado Maio 15, 2013 Samuel, Tentei fazer como você sugeriu... inseri dois campos com dois resultados, porém só foi mostrado o último valor no caso TESTE 2. ex.: Adicionei [] em: input.name = "teste[]"; e no php if($_POST){ var_dump($_POST['teste']); } e foi exibido para mim apenas o ultimo valor inserido no input: array(1) { [0]=> string(4) "cas2" } Será que fiz alguma cois ade errado? Vlws pela força... vou dar + algumas pesquisadas Compartilhar este post Link para o post Compartilhar em outros sites
Samuel Gomes_148425 19 Denunciar post Postado Maio 15, 2013 Depois, se voce puder, mande o seu html, a parte que ele faz essas inserções de input Eu estou tentando rodar ele aqui Mas eu acho que o caminho é por ai mesmo, declarar esses name com [], afim de retornar um array para o seu POST Compartilhar este post Link para o post Compartilhar em outros sites
Videres 3 Denunciar post Postado Maio 15, 2013 Depois, se voce puder, mande o seu html, a parte que ele faz essas inserções de input Eu estou tentando rodar ele aqui Mas eu acho que o caminho é por ai mesmo, declarar esses name com [], afim de retornar um array para o seu POST Blz, o Script q faz as inserções é ess abaiaxo: var cont_input = 0; var cont_label = 0; var cont_name = 0; //adicionando INPUT function addInput(){ var labels = document.getElementsByTagName("label"); var maximo_inputs = 10; cont_input++; cont_label++; //cont_name++; var label = document.createElement("label"); var input = document.createElement("input"); input.type = "text"; input.name = "teste[]"; input.value = ""; input.id = "add-input"+cont_input; label.id ="add-label"+cont_label; label.innerHTML = "Disciplina "+1; document.getElementById("content-form").appendChild(label); document.getElementById("content-form").appendChild(input); } function removeInput(){ var filho_input = document.getElementById("add-input"+cont_input); var filho_label = document.getElementById("add-label"+cont_label); cont_input--; cont_label--; //cont_name--; document.getElementById("content-form").removeChild(filho_label); document.getElementById("content-form").removeChild(filho_input); //alert("Teste LAbel -> "+cont_label); //document.getElementById("content-form").removeChild(filho_label); } Onde insiro o input é no cod abaixo: <form id="form-cadastro" name="form-cadastro" method="post" action="?pag=realizar-cadastro"> <div id="content-form"></div> <input type="button" value="Adicionar" name="btn-add" id="btn-add" class="btns" onclick="addInput()"/> <input type="button" value="Remover" name="btn-remove" id="btn-remove" class="btns" onclick="removeInput();"/> <br /><br /> <input type="submit" value="" id="btn-cadastro" /> </form> Encontrei um outro exemplo com foreach -> http://programacaocerta.blogspot.com.br/2009/07/php-arrays-checkbox.html mas n funfou tb.. ele só exibe o último valor. ja ja saii.. srrsrs Vlws pela força -------------------------------------------------------------------------------------------------------------- Ah! Samuel saquei o problema!... srsrsrsr É que no meu form.. eu deixei um input padrão... e quando ia testar só testava com adicionava 1 input... consequentemente só iria exibir um mesmo.. ashasuuahuhhuas Quando adicionei + de 1 percebi isso. n iria funfar NUNCA! ashuashuashuhuashuas Eu utilizei ess cod. provavelmente o que vc sugeriu funfaria tb: foreach($_POST["teste"] as $key => $value){ echo"Key: $key; value: $value <br/>"; } Agora é só inserir os valores dentro de um array! Pensei em algo do tipo $arraykey [$key] = $value; é por ess caminho? VLWS PELA AJUDA! \o Compartilhar este post Link para o post Compartilhar em outros sites
Samuel Gomes_148425 19 Denunciar post Postado Maio 15, 2013 Aqui funcionou Vou colocar o código todo, e veja se consegue <html> <head> <title>Título</title> <script LANGUAGE="javascript"> var cont_input = 0; var cont_label = 0; var cont_name = 0; function olamundo(){ alert("Olá!!!"); } function addInput(){ var labels = document.getElementsByTagName("label"); var maximo_inputs = 10; cont_input++; cont_label++; cont_name++; var label = document.createElement("label"); var input = document.createElement("input"); input.type = "text"; input.name = "teste[]"; input.id = "add-input"+cont_input; label.id ="add-label"+cont_label; label.innerHTML = "Disciplina "+1; document.getElementById("content-form").appendChild(label); document.getElementById("content-form").appendChild(input); } function removeInput(){ var filho_input = document.getElementById("add-input"+cont_input); var filho_label = document.getElementById("add-label"+cont_label); cont_input--; cont_label--; cont_name--; document.getElementById("content-form").removeChild(filho_label); document.getElementById("content-form").removeChild(filho_input); } </script> </head> <body> <form id="form-cadastro" name="form-cadastro" method="post" action="teste_input.php"> <div id="content-form"></div> <input type="button" value="Adicionar" name="btn-add" id="btn-add" class="btns" onclick="addInput()"/> <input type="button" value="Remover" name="btn-remove" id="btn-remove" class="btns" onclick="removeInput();"/> <br /><br /> <input type="submit" value="Continuar" id="btn-cadastro" /> </form> </body> </html> teste_input.php <?php /* * To change this template, choose Tools | Templates * and open the template in the editor. */ var_dump($_POST['teste']); ?> Resultado: array (size=3) 0 => string '123' (length=3) 1 => string '321' (length=3) 2 => string '333' (length=3) Compartilhar este post Link para o post Compartilhar em outros sites
Videres 3 Denunciar post Postado Maio 15, 2013 Então Samuel, Como tinha falado no post anterior no finalzinho.. saquei a bronca... estava no meus teste.. ashuashuhuhua Eu tinha deixado um campo padrao e só estava adicionando 1 input, consequentemente só veria o último valor mesmo.. ehehehhe Deixa te fazer só +1 pergunta, como faço para inserir os valores recebidos por var_dump($_POST['teste']); em um array? Do outro jeito que encontrei: foreach($_POST["teste"] as $key => $value){ echo"Key: $key; value: $value <br/>"; //pensei em inserir o array dessa forma $array_teste [$key] = $value; } É por ess caminho? BRIGADAO MESMO PELA AJUDA!!! ^~ acredito q uma parte do problema já tenha sido resolvido..a gora é comigo para fazer o sql.. srsrsr Compartilhar este post Link para o post Compartilhar em outros sites
Samuel Gomes_148425 19 Denunciar post Postado Maio 15, 2013 Voce armazena o valor em uma variável $arrayTeste = $_POST['teste']; a função var_dump(), serve para você ver o que está contido em uma variável, objeto, array, etc... $arrayTeste['0']; $arrayTeste['1']; sizeof($arrayTeste); //para pegar o tamanho do array Você não precisa usar o foreach para colocar os dados num array Basta fazer o que disse acima: $arrayTeste = $_POST['teste']; A variável $arrayTeste, automaticamente tomará para si, os valores de POST, tornando-se um array. Depois utilize algum css/html, para deixar seu layout mais "bonito", como o Twitter Bootstrap http://twitter.github.io/bootstrap/ http://twitter.github.io/bootstrap/examples/hero.html? http://www.plugolabs.com/twitter-bootstrap-button-generator/ Compartilhar este post Link para o post Compartilhar em outros sites
Videres 3 Denunciar post Postado Maio 15, 2013 Voce armazena o valor em uma variável $arrayTeste = $_POST['teste']; a função var_dump(), serve para você ver o que está contido em uma variável, objeto, array, etc... $arrayTeste['0']; $arrayTeste['1']; sizeof($arrayTeste); //para pegar o tamanho do array Você não precisa usar o foreach para colocar os dados num array Basta fazer o que disse acima: $arrayTeste = $_POST['teste']; A variável $arrayTeste, automaticamente tomará para si, os valores de POST, tornando-se um array. BLZ SAMUEL!!! Resolvido! Tu é o cara :yes: Agora entendi para que serve o danado do var_dump, n tinha entendido muito bem atraves do manual! :closedeyes: Brigadao. \o abraço Compartilhar este post Link para o post Compartilhar em outros sites