Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Viva pessoal,Algum conhece um exemplo ou me podem explicar como fazer um form que a gente possa adicionar e remover campos dinamicamente e depois gravar no mysql?Ex.:no form ter um botao a dizer adicionar e ao clicar adicionar mais um campo de texto e outro a dizer remover e ao clicar retirar esse campo de texto.E como pegar estes dados para gravar no mysql.obrigado AbraçosPaulo
Obrigado pelas dicas.
Encontrei um exemplo:
<script type="text/javascript"><!--function addEvent(){var ni = document.getElementById('myDiv');var numi = document.getElementById('theValue');var num = (document.getElementById("theValue").value -1)+ 2;numi.value = num;var divIdName = ""+num+"";var newdiv = document.createElement('div');newdiv.setAttribute("id",divIdName);newdiv.innerHTML = "Campo "+num+" <input type='text' name='nome"+num+"' size='40' maxlength='255'><a href=\"java script:;\" onclick=\"removeEvent(\'"+divIdName+"\')\">Remover campo ""+divIdName+""</a>";ni.appendChild(newdiv);}function removeEvent(divNum){var d = document.getElementById('myDiv');var olddiv = document.getElementById(divNum);d.removeChild(olddiv);}//--></script>
E no form:
if (!$ok) { echo "<p><a href=\"java script:;\" onclick=\"addEvent();\">Adicionar Campo</a></p>"; echo "<form name=\"form_temporada\" method=\"post\" action=\"admin.php?page=teste&op=teste2&ok=true\">"; echo "<input type=\"hidden\" value=\"0\" id=\"theValue\" />"; echo "Prova: <input type=\"text\" name=\"prova\" size=\"40\" maxlength=\"255\">"; echo "<div id=\"myDiv\"> </div>"; echo "<input type=\"submit\" name=\"Submit\" value=\"Gravar\">"; echo "</form>"; } else { $save = true; $dblink->query("INSERT INTO memht_teste (id_teste,prova,nome) VALUES (null,'$prova','$nome')"); }
Agora como faço para pegar a variavel do campo dinamico para gravar tudo na base de dados?
Obrigado pela atenção
Abraços
Paulo
PHP
$sql = " VALUES ('', "; foreach ($_POST as $campo => $valor) {
$$campo = $valor;
if([strtolower](http://br.php.net/strtolower)($campo) != "submit") {
if ($campo == "data") { // se o nome do campo for data, executa a formatação da data
$valor = [implode](http://br.php.net/implode)("-", [array_reverse](http://br.php.net/array_reverse)([explode](http://br.php.net/explode)("/", $valor)));
}
$sql .= "'" . $valor . "', ";
$campo_ .= $campo . ", ";
}
}
$campo_ = [rtrim](http://br.php.net/rtrim)($campo_, ", ") . ")";
$sql_ = [rtrim](http://br.php.net/rtrim)($sql, ", ");
$cadastra = [mysql_query](http://br.php.net/mysql_query)("INSERT INTO tabela (id, " . $campo_ . $sql_ . ")") or [die](http://br.php.net/die)([mysql_error](http://br.php.net/mysql_error)());
Esse script pega tudo que foi enviado via POST e insere na tabela. Como o botão do formulário também é um elemento que contém valor, ele verifica se o elemento NÃO é o botão (submit), esse trecho deve permanecer, caso contrário ele irá buscar um campo na tabela com o nome de submit e tentará inserir o valor no mesmo.
PHP
if(strtolower($campo) != "submit") {
Esta outra parte verifica se o elemento é o campo Data, para o caso de querer formatar a data para o formato Y-m-d, se for para ficar no formato brasileiro (d-m-Y) é só apagar o código abaixo:
PHP
if ($campo == "data") { // se o nome do campo for data, executa a formatação da data $valor = [implode](http://br.php.net/implode)("-", [array_reverse](http://br.php.net/array_reverse)([explode](http://br.php.net/explode)("/", $valor)));
}
Se você for gravar os dados em um BD, a tabela teria que ter os nomes dos campos com o mesmo nome dos campos enviados, como seu formulário será dinâmico, a tabela também teria que ser, aí já teria que usar ALTER TABLE.
Você pode conseguir fazer isso usando Variáveis Variáveis, em PHP, e createElement, em JavaScript. Dá uma pesquisada no Google que tem algum material.