Ir para conteúdo

POWERED BY:

Arquivado

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

joaogil

listar os $_POST dentro de um for

Recommended Posts

Eu tenho um Form que de acordo com a numero da qtde de dependentes colocado num campo texto gera tantos campos quanto necessarios:

 

Ex: se for o número 3 digitado dentro do campo dependentes irá gerar um form com 3 campos textos de nome assim:

 

<input type=text name=nome1>

<input type=text name=nome2>

<input type=text name=nome3>

 

só que na verdade isso é gerado dentro de um FOR, assim:

 

for( $i=1; $i <= $qtde_dependentes; $i++){       echo "<input type='text' name='nome" .$i. "'>";}
Até aí beleza...

 

Só que não estou conseguindo fazer um loop pra pegar esse valores na outra página com o $_POST[];

 

Eu teria que fazer algo tipo:

 

for( $i=1; $i <= $qtde_dependentes; $i++){       $nome + $i = $_POST['nome'. $i];}
pra poder pegar esses valores e tranformar em variáveis...

 

Só que já tentei de várias formas e não deu certo, a maioria das vezes pega o primeiro valor e faz um loop sem fim ??????!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que o meu formulario não tem apenas um campo "nome", ele tem + 3 campos.

Eu quero dizer que se,

por exemplo for digitado 3 no campo qtde_dependentes do formulario anterior produzirá um outro formulário com 12 campos, ou seja 3 vezes 4, assim:

 

nome1

data_nascimento1

grau_parentesco1

id_cliente1

 

nome2

data_nascimento2

grau_parentesco2

id_cliente2

 

nome3

data_nascimento3

grau_parentesco3

id_cliente3

 

E pra eu pegar esses velores eu precisava fazer um for ou while, porque a cada 4 variáveis eu preciso fazer um INSERT no BD.

 

Já com o foreach eu não sei como fazer isso ??????!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

use arrays

 

você vai ter q gerar uma saida como essa:

 

<input type=text name=nome[1]>

<input type=text name=nome[2]>

<input type=text name=nome[3]>

 

O q não eh nada de mais... eh apenas o seu codigo com os colchetes

 

PHP [/tr][tr]for( $i=1; $i <= $qtde_dependentes; $i++)

{

 

echo "<input type='text' name='nome[" .$i. "]'>";

}

[/tr]

 

 

eles vão chegar ao php como se fosse um array "nome"

 

Agora você usa o codigo q o fabyo postou

 

"foreach ($_POST["nome"] as $campo => $valor) { $$campo = $valor; }"

 

recomendo colocar esse codigo dentro de um if testando se eh mesmo um array, pra evitar saidas indesejadas provocadas pelo foreach

 

PHP [/tr][tr]if(is_array($_POST["nome"])){

foreach ($_POST["nome"] as $campo => $valor) { $$campo = $valor; }

}

[/tr]

 

 

você faz isso para todos os campos q você quer

 

dai no script q você vai tratar os dados vai chegar os arrays q você quer, usa o foreach pra tratar cada um

 

você pode usar um while tb

PHP [/tr][tr]while (list($key, $val) = each($_POST["nome"])) {

//Onde Key eh o indice e o $val vai ser o valor q o php recebe do inputtext

}

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado voces dois camaradas, mas eu ainda não sei direito como vou fazer porque a cada 4 campos eu preciso fazer um INSERT TO:

 

INSERT TO dependente (nome, data_nasc, grau_parentesco, grau_parentesco)VALUES ('nome1', 'data_nasc1', 'grau_parentesco1', 'grau_parentesco1')
e no outro loop:

 

INSERT TO dependente (nome, data_nasc, grau_parentesco, grau_parentesco)VALUES ('nome2', 'data_nasc2', 'grau_parentesco2', 'grau_parentesco2')
e assim por diante...

 

Eu não sei como fazer, se algué puder me dar + uma ajudinha ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que entendi o que você quer mas você nao soube usar o que eu te passei

 

nao importa se você tiver 1 ou 100 campos o foreach vai pegar todos e criar as variaveis com o mesmo nome que tiver no campo la

 

exemplo

 

nome1

data_nascimento1

grau_parentesco1

id_cliente1

 

nome2

data_nascimento2

grau_parentesco2

id_cliente2

 

nome3

data_nascimento3

grau_parentesco3

id_cliente3

 

depois que passar pelo foreach:

 

$nome1

$data_nascimento1

$grau_parentesco1

$id_cliente1

 

$nome2

$data_nascimento2

$grau_parentesco2

$id_cliente2

 

$nome3

$data_nascimento3

$grau_parentesco3

$id_cliente3

 

entao?

 

qual a duvida?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo bem Fabyo, mas eu não sei como fazer, dinamicamente, ou seja, sem eu saber quantos repetições desses 4 campos terão, pra inserí-los no BD:

 

Eu tb tentei desse modo que o Flybybetto mostrou a quase consegui,

mas se tem um jeito de listar 2 ou + arrays ao mesmo tempo funcionará

 

Tipo:

 

foreach (($_POST["nome"] as $campo => $valor) AND ($_POST["grau_parentesco"] as $c => $v))

 

Eu preciso fazer algo parecido com isso aqui acima (só que desse jeito não funcionou)...

 

Se puderem me ajudar + uma vez ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não,

 

é que esse cadastro de clientes está sendo feito em 2 etapas:

 

1. Eu cadastro o cliente e no final do cadastro o cliente tem direito a colocar quantos dependentes quizer.

 

Essa quantidade de dependentes é digitada num campo texto chamado qtde_dependentes

 

Depois de escolher a quantidade de dependentes ele envia esse primeiro formulário, onde cada dependente terá 4 campos:

 

nome, data_nasc, grau_parentesco, id_cliente

 

pra cada dependente poder ser cadastrado com seus dados...

 

Por isso que eu estou usando nomes sequenciais, porque não sei quantos dependentes o cliente terá, ou seja, não sei qual o número que será digitado no campo qtde_dependentes.

 

Se ele ter 2 dependentes, será gerado um formulário com campos assim:

 

nome1

data_nascimento1

grau_parentesco1

id_cliente1

 

nome2

data_nascimento2

grau_parentesco2

id_cliente2

 

E a cada 4 campos (os 4 campos do dependente tal) deve ser feito o INSERT TO no BD.

 

Eu não posso inserir tudo de uma vez porque serão 2 dependentes diferentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos ver se eu te dou uma luz

 

 

Primeiro o codigo pra geral a lista de dependentes:

 

Onde $n eh o numero de dependentes

 

PHP [/tr][tr]for($i=0;$i<$n;$i++){

echo "<input type=text name='dependente[$i][nome]'>";

echo "<input type=text name='dependente[$i][data_nascimento]'>";

echo "<input type=text name='dependente[$i][grau_parentesco]'>";

echo "<input type=text name='dependente[$i][id_cliente]'>";

}

[/tr]

 

Isso vai gerar os campos pra cada dependente

 

Depois, qd o cara der POST no script, vai chegar o seguinte Array no servidor:

 

PHP [/tr][tr]

$_POST["dependente"][0]["nome"]

$_POST["dependente"][0]["data_nascimento"]

$_POST["dependente"][0]["grau_parentesco"]

$_POST["dependente"][0]["id_cliente"]

 

$_POST["dependente"][1]["nome"]

$_POST["dependente"][1]["data_nascimento"]

$_POST["dependente"][1]["grau_parentesco"]

$_POST["dependente"][1]["id_cliente"]

[/tr]

 

E assim por diante

 

você usa o count pra saber qts dependentes chegaram no Array

 

PHP [/tr][tr]$n_dependentes = count($_POST["dependente"]);[/tr]

 

No meu exemplo vai restorar 2, o dependente Zero e o dependente 1;

 

 

agora, so um for pra pegar os dados e jogar no SQL

 

PHP [/tr][tr]for ($d=0;$d<$n_dependentes;$d++ ){

$nome = $_POST["dependente"][$d]["nome"];

$data_nascimento= $_POST["dependente"][$d]["data_nascimento"];

$grau_parentesco= $_POST["dependente"][$d]["grau_parentesco"];

$id_cliente= $_POST["dependente"][$d]["id_cliente"];

 

//Aqui vai os SQLs

}

[/tr]

 

Bom.. se isso não ajudar ñ sei o q mais ajudaria

 

:D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pessoal, com esses seus exemplos eu consegui !!!

 

usei o primeiro código que o Flybybeto mostrou, mas na hora de listar eu usei um código que achei ontem no www.php.net, assim:

 

PHP [/tr][tr]

for( ;list(, $nome ) = each( $_POST["nome"] ) , list(, $grau_parentesco ) = each( $_POST["grau_parentesco"] ), list(, $id_cliente ) = each( $_POST["id_cliente"] ), list(, $data_nasc ) = each( $_POST["data_nasc"] ); )

{

 

// o comando SQL INSERT

 

}

[/tr]

 

E funcionou !!!

Ou seja consegui listar todos os arrays POST ao mesmo tempo.

Não sei se voces conhecem esse código, devem conhecer. Eu não conhecia...

 

Ainda não tentei esse último código do Flybybeto, mas só de vista já dá pra ver que funciona...

 

Só me diga + uma coisa. Como se chama esse tipo de array:

$_POST["dependente"][0]["nome"]

é uma matriz ?

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.