joaogil 1 Denunciar post Postado Fevereiro 26, 2005 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
Fabyo 66 Denunciar post Postado Fevereiro 26, 2005 foreach ($_POST as $campo => $valor) { $$campo = $valor; } se tiver duvida poste ai Compartilhar este post Link para o post Compartilhar em outros sites
joaogil 1 Denunciar post Postado Fevereiro 27, 2005 É 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
Flybybetto 0 Denunciar post Postado Fevereiro 27, 2005 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
joaogil 1 Denunciar post Postado Fevereiro 27, 2005 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
Fabyo 66 Denunciar post Postado Fevereiro 27, 2005 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 nome1data_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
joaogil 1 Denunciar post Postado Fevereiro 27, 2005 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
Fabyo 66 Denunciar post Postado Fevereiro 27, 2005 parece que seu problema nao ta no loop e sim na sua criação dos campos uma pergunta quando você cria os campos você cria um nomes sequencial pra eles ? Compartilhar este post Link para o post Compartilhar em outros sites
joaogil 1 Denunciar post Postado Fevereiro 27, 2005 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
Fabyo 66 Denunciar post Postado Fevereiro 27, 2005 pq você ja nao grava no banco o cliente e na outra tela você grava os dependentes dai fica ate melhor pra você fazer um relacionamento do cliente com os dependentes Compartilhar este post Link para o post Compartilhar em outros sites
Flybybetto 0 Denunciar post Postado Fevereiro 27, 2005 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
joaogil 1 Denunciar post Postado Fevereiro 27, 2005 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
Flybybetto 0 Denunciar post Postado Fevereiro 27, 2005 Sim... eh uma Matriz... eh a melhor coisa q ja inventaram em materia de programação! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites