Olá,
neste artigo darei um exemplo de como criar uma função para salvar dados no banco de dados MySQL facilmente a partir de um formulário. Os dois únicos parâmetros que a função pede são: a variável $_POST completa, e o nome da tabela a inserir os dados. Não é necessário informar os nomes dos campos. Apenas crie o formulário com os seus campos tendo o mesmo nome do respectivo campo no banco de dados. Vamos ao exemplo:
1º - Crie a seguinte tabela no seu banco de dados:
Tabela do MySQL (apenas como exemplo):
SQL
CREATE TABLE `teste` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`campo1` TEXT NOT NULL ,
`campo2` TEXT NOT NULL ,
`campo3` TEXT NOT NULL
) ENGINE = MYISAM ;
2º - Função para receber os dados e salva-los no banco de dados (insertdb.php):
PHP
<?
/*****************************************************************/
/* Script desenvolvido por Rafael G. Martins
/*
/* Data: 15/10/2007
/*
/* Versão: 1.0
/*
/* Funçao: Recebe uma variavel "$_POST" de um formulario,
/* e insere os dados numa tabela do MySQL
/*
/* Caso hajam erros envie email para: rafael@rafaelmartins.com
/*****************************************************************/
/*
Função insertDB
Entrada: $info: Variavel de formulario
(Ex: $_POST)
$table: Nome da tabela do Mysql que receberá os dados.
(Ex: "teste")
Retorno: formato BOOL:
Valores:
true: se os dados foram inseridos com sucesso.
false: se ocorreu alguma falha ao inserir os dados
*/
function insertDb($info,$table){
$count = 1; //Contador para auxiliar na colocação das virgula
foreach($info as $key=>$value){
$fields .= $key; //Montagem da query
$values .= "'".$value."'"; //Montagem da query
$fields .= ","; //Inserção das virgulas
$values .= ","; //Inserção das virgulas
}
$count++;
}
mysql_query("INSERT INTO $table($fields) VALUES($values)");
//Realização da query }
?>
3º Arquivo de testes (form.php):
PHP
<?
/*****************************************************************/
/* Script desenvolvido por Rafael G. Martins
/*
/* Data: 15/10/2007
/*
/* Versão: 1.0
/*
/* Funçao: Recebe uma variavel "$_POST" de um formulario,
/* e insere os dados numa tabela do MySQL
/*
/* Caso hajam erros envie email para: rafael@rafaelmartins.com
/*****************************************************************/
require_once("insertdb.php"); //inclusao do arquivo com a funcao
mysql_connect("localhost",
"root",
"");
//conexão com o banco de dados(coloque os seus valores!) mysql_select_db("teste");
//Definição do banco de dados a ser usado(escolha o seu!)
if(isset($_POST[campo1
])){ //Testa se o form foi postado if(insertDb($_POST,"teste")){ //Chama a função
echo "Dados inseridos com sucesso!";
}
else{
echo "Falha ao inserir os dados!";
}
}
else{ //se não foi postado imprime o form
?>
<html>
<body>
<form method="post" action="<?=$PHP_SELF;?>">
<!-- Form de exemplo(Note que os campos tem o mesmo nome no banco de dados) -->
Campo 1:<input type="text" name="campo1"><br>
Campo 2:<input type="text" name="campo2"><br>
Campo 3:<input type="text" name="campo3"><br>
<input type="submit" value="Enviar"><br>
<!-- Importante: O submit nao pode ter a propriedade "name", senão dará errado!)-->
</form>
</body>
</html>
<?
}
?>
Observe que isto é apenas um exemplo!
Nenhum cuidado foi tomado com relação a SQL injection ou a qualquer outra ameaça, cabe ao usuário do código fazer as devidas modificações.
Espero ter ajudado.
Rafael Gonçalves Martins