Pular para o conteúdo

Criando variáveis dinâmicas em PHP a partir de um formulário

Dica publicada em PHP / Avançado
César tinum da silva mago_dos_chats
Hits: 22.479 Categoria: PHP Subcategoria: Avançado
  • Indicar
  • Impressora
  • Denunciar

Criando variáveis dinâmicas em PHP a partir de um formulário

Bom pessoal, aí vai uma dica de como pegar todos os valores de um formulário em uma página PHP sem ter que ficar declarando campo por campo, como a seguir:

$nome = $_POST['nome'];
$sexo = $_POST['sexo'];
$idade = $_POST['idade'];
etc...

Se o seu formulário tiver mais de 100 inputs, sua página PHP terá 100 linhas assim, o que torna-se pouco produtivo e proporciona muitas possibilidades de erro.

Uma opção muito prática para solucionar este problema é a estrutura "foreach" e a função "eval". O foreach percorrerá o array de dados que vem por post da página do formulário e o eval transformará estes dados em variáveis dinamicamente, como exemplo abaixo:

//Página que recebe os dados
<?
foreach($_POST as $key => $valor)
{
   /* Aqui se declara variável dinamicamente; pode ser um array de variáveis com conteúdo do array post onde cada posição contém o nome do campo do formulário e o valor será o valor do campo do formulário, ou criar várias variáveis isoladas como abaixo. */
   $temp = "\$".$key." = \"".$valor."\";";
   eval($temp);
}
//O que seria como se declarássemos assim
$key = $valor; //Onde key e nome do campo do form e valor o valor do campo.
//No caso de se criar um array seria assim:
$temp = "\$Dados['".$key."'] = \"".$valor."\";";
eval($temp);
//Assim todos os dados que vierem do formulário estarão no array Dados.

Bom, espero que ajude alguém.

Até mais e um abraço a todos.

Criando variáveis dinamicamente com Javascript

Python: Somando valores em um dicionário de strings

Ordenando dicionários em Python

Documentação do CodeIgniter em português

P4A - PHP For Applications

PHP + Shell script

Imprimindo dados enviados via PHP

Lista de discussão de desenvolvedores PHP de Minas Gerais

#2 Comentário enviado por mago_dos_chats em 06/02/2009 - 16:48h
legal, so que aqui fiz especificamente pra um form enviado por Post e nao pra qualquer array. =/
#3 Comentário enviado por everton3x em 05/05/2009 - 16:07h
Ñão seria mais fácil fazer:

foreach($_POST as $name => $value){
$$name = $value;
}
#4 Comentário enviado por mago_dos_chats em 07/05/2009 - 11:41h
everton3x, estou mostrando um jeito, logico que existem outros n modos, cada um usa o que quiser.

Contribuir com comentário

Entre na sua conta para comentar.