Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Videres

Criar um array da tag name com $_POST

Recommended Posts

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
<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

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

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

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,

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.