Como capturar campos de formulários dinâmicos em PHP
Ontem (30/01) eu estava num dilêma: tenho um grande formulário que é gerado dinamicamente, como vou capturá-lo?
Em formulários fixos, a coisa é fácil porque é só especificar em uma variável o nome do campo, por exemplo:
$campo = $_POST['campo'];
Mas, quando a coisa é gerada dinamicamente, os nomes também são gerados dinamicamente, então como capturá-los?
Eis que pedindo a ajuda do pessoal do grupo PHPFORTALEZA, consegui a solução.
Duas pessoas me responderam com duas dicas diferentes que simplesmente: CASARAM com o que eu precisava, então bastou unir o jôio, com o trigo.
Primeira dica:
Se seu formulário for gerado dinâmicamente, crie os nomes dos campos em forma de arrays, exemplo:
<input type="textfield" name="campo[nome]">
<input type="textfield" name="campo[idade]">
Agora crie o arquivo que para onde o seu formulário será submetido:
$dados = $_POST['campo']; // captura todos os campos em um array
Pronto, você já tem todos os dados em apenas um array, quer testar?
echo $dados['nome'];
echo $dados['idade'];
Ou que tal fazer um foreach e ler todos os valores de todos os campos de uma vez?
$keys = array_keys($dados); // retorna as chaves do array $dados no array $keys
foreach($keys as $k) {
echo $dados[$k];
}
Como se pode ver, de uma maneira simples, você resolve um "problemão". Muito obrigado a aos membros do PHPFORTALEZA.
Já trabalhei com campos dinâmicos mas fiz algo bem mais simples:
//recebe TODOS os campos enviados por post
$campos = $_POST;
//obtém as chaves e navega pelos campos
foreach ($campos as $chave => $valor) {
echo "$chave => $valor\n";
}
Solução interessante.
Gostei =)
infog.casoft.info
er ... poxa meu caro, quando vi no BR-Linux achei que fosse algo realmente interessante. Sua intenção foi boa, mas a solução é extremamente básica.
Vamos add um pouco de conteúdo.
Usando um esquema de formulários dinâmicos, que coloque além do campo, um segundo campo hidden, definindo o tipo do campo em um outro, tu é capaz de fazer também validação automática. Um código extremamente simpls para teres idéia:
< input type='text' name='campos[nome]'>
< input type='hidden' name='tipo[nome]' value='text'>
< input type='text' name='campos[cnpj]'>
< input type='hidden' name='tipo[cnpj]' value='cnpj'>
quando tu chegar na página action do form:
foreach($_POST['campos'] as $fname => $fvalue) {
validField($fname,$fvalue,$_POST['tipo'][$fname]);
}
Nesta função vc chama uma outra para cada tipo de campo, em um esquema de switch, validando, e é claro, validando se está em branco primeiro. Também da pra validar se o campo é obrigatório, mas ai já tendo alguma coisa tipo base de dados, etc.
é uma boa base para um artigo, mas não coisas básicas meu caro.
Olá.
Esse é o conceito que utilizamos no NeverForms ( http://www.ipontus.com.br/neverforms/ ). O projeto está desatualizado mas pode te ajudar a encurtar caminho se trabalhar com formulários dinâmicos.
Abraço.
Wladimir Camargo
wladimir.at.ipontus.com.br
Chronos, é né 'meu caro', não se pode agradar a todos. Se você estava atrás de soluções miraculosas, etc. Esse não é o objetivo deste blog. Que além de alguns artigos pequenos e reviews, dá soluções simples, para coisas simples.
Aposto como esse artigo ajudou mais gente do que 'atrapalhou'. Meu caro.
achei que fosse algo realmente melhor sim, afinal, foi parar no Br-Linux não é.
Deverias mandar para algum lugar mais direcionado a soluções PHP, do que um blog que definitivamente não é sobre programação, ou no minímo apresentar um artigo melhorado.
Vou começar a postar artigos de algo como '5 maneiras de matar processos via bash' pro br-linux, assim ganho também algumas visitas, e criticas como a que lhe fiz, pro meu blog.
KRA..
VC QUEBRO UM GALHAoOO.. RS
OBRIGADO!!!
VLWSS
Funciona, mas queria saber como enviar por email, já que o texto quando enviado fica todo atrapalhado. Alguém posta um exemplo aí, please.
Sobre esse tal Felipe 'chronos' Prenholato:
A estratégia de quem SE ACHA tão grande é tentar diminuir os outros.
Heya i'm for the first time here. I came across this board and I find It really useful & it helped me out much. I hope to give something back and help others like you helped me.
Also visit my web page :: What Is a graduate certificate
Heya i'm for the first time here. I came across this board and I find It really useful & it helped me out much. I hope to give something back and help others like you helped me.
Also visit my web blog :: What Is a graduate certificate
This is my first tme pay a vieit at here and i am in fact happy to
reead all at alone place.
Here is my site - pest Control angel Islington London
Αccordіng to studies, drinking ƿlenty of water is found to be
very beneficial to flush out toxins from body orgɑns like kidney.
What fat loss comes down to is veгy simple, Calories in Vs.
If you have done ѕome resеarсh by yourself аƄout Weight Loss Diet,
and Weight Loss Recipеs in general, I am sure ɑt
some point of your active interest tο find the гight
proǥrаm, you started to realize a trenԁ about "Effective and Legitimate Diet Programs" aгe based
of three components:.
Ңave a look at my web site: ultimate herpes prоtоcol free - Collegedatingcoaches.com,
to Android app was actually better than Android's simple edits program.
This not only helps to get rid of gum problems, but also helps
to prevent future gum problems. Beautiful tooth communicate several
messages to Health and vitality.
my site - best tooth whitening (Onnl.snu.ac.Kr)
hi!,I love your writing so much! share we keep up a correspondence extra approximately your post on AOL?
I require a specialist in this space to solve my problem.
Maybe that's you! Taking a look ahead to peer you.
Review my blog post; goji berry