Ir para conteúdo

POWERED BY:

Arquivado

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

paulo89

Adicionar/Remover campos

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP
$sql = " VALUES ('', ";                

       foreach ($_POST as $campo => $valor) {                          

           $$campo = $valor;                                      

           if(strtolower($campo) != "submit") {                                    

                 if ($campo == "data") { // se o nome do campo for data, executa a formatação da data

                          $valor =  implode("-", array_reverse(explode("/", $valor)));

                  }

                  $sql .= "'" . $valor . "', ";

                  $campo_ .= $campo . ", ";

            }    

        }

        $campo_ = rtrim($campo_, ", ") . ")";

        $sql_ = rtrim($sql, ", ");

        $cadastra = mysql_query("INSERT INTO tabela (id, " . $campo_ . $sql_ . ")") or die(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("-", array_reverse(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.

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.