Kante 0 Denunciar post Postado Janeiro 13, 2009 Boa noite pessoal, Estou criando um formulário com impressão de campos dinâmicos em conformidade com a quantidade de registros, respectivamente também com campos dinâmicos... Vou resumir aqui o exemplo com uma tabela dinâmica criada, com 3 colunas e várias linhas... 1. Na primeira coluna imprimo os inputtext correspondentes aos códigos dos produtos, o qual estará bloqueado pois trata-se de um campo autoincrement que não pode ser mudado. 2. Na segunda coluna imprimio os inutetxt correspondentes ao nome do produto. Como este último permite a edição, também faz-se necessário um botão de confirmar alteração que coloco na terceira coluna, se repetindo também em conformidade com o número de registros da lisgagem. Tal botão chama um outro form na expectativa de recuperar os dados pelo método $_POST, o que não estou conseguindo. Os campos a serem enviados no botgão atualizar são criados com o seguinte código abaixo resumido: <?php //FORMULÁRIO A SER ENVIADO ?> <form name="frm_atualizar" id="id_frm_atualizar" action="php/confirmar_atualizacao.php" method="post"> <?PHP for($i=0; $i<mysqli_num_rows($res); $i++) { $dados = mysqli_fetch_row($res); $id_produto = $dados[0]; $descricao = $dados[1]; ?> <TR bgcolor="<?php echo $fundo; ?>" align="center" valign="top" > <td> <input type="text" name="txt_produto_id[]" value="<?php echo $id_produto; ?>" size="4"> </td> <TD> <input type="text" name="txt_produto_descricao" value="<?php echo $descricao; ?>" size="40"> </TD> <td valign="middle"> <input type="submit" name="Confirmar_alteracao" value="Atualizar"></FONT> </td> / /já, o FORMULÁRIO CHAMADO PELO BOTÃO QUE OBJETIVA RECUPERAR OS DADOS ATUALIZANDO OS REGISTROS, SUBMENTENDO A UM UPTDATE ESTA ABAIXO RESUMIDO $i_cod_produto = $_POST["txt_produto_id[]"]; //Queria que pegasse o código do Produto do form anterior //A PARTIR DAQUI DA ERRO POIS NÃO CONSIGO RECUPERAR O ID PRODUTO E DAÍ NEM ADIANTA POSTAR A ROTINA DO UPTDA... Alguém já deve ter precisado de algo parecido assim. Como resolveu ? O q me aconselham ? ou devo migrar para outra plataforma ? Compartilhar este post Link para o post Compartilhar em outros sites
Renato Siroma 2 Denunciar post Postado Janeiro 13, 2009 $i_cod_produto = $_POST["txt_produto_id[]"]; Creio eu que o erro está em ["txt_produto_id[]"] Porque ... para ser passada a variável via POST você setou algum indice do arrayEX: Passado via post esta variavel ficou txt_produto_id[1] Usar ela apenas como array ordenado não funciona Compartilhar este post Link para o post Compartilhar em outros sites
Kante 0 Denunciar post Postado Janeiro 13, 2009 Tá. E como faço então ? Como seto o valor correto a passar no array ? E, principalmente, como recupero ele depois no form que o receberá ? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 13, 2009 Vai virar um bidimensional, tenta por exemplo: echo $_POST['txt_produto_id']['0']; echo $_POST['txt_produto_id']['1']; echo $_POST['txt_produto_id']['2']; echo $_POST['txt_produto_id']['3']; O melhor aqui, é você criar um laço para resgatar todos os valores que recebeu do form. Compartilhar este post Link para o post Compartilhar em outros sites
Kante 0 Denunciar post Postado Janeiro 13, 2009 pelo que entendi, você simplesmente precisa fazer um include. Não sei se entendi bem. Explique qual é a finalidade disso. Vai virar um bidimensional, tenta por exemplo: echo $_POST['txt_produto_id']['0']; echo $_POST['txt_produto_id']['1']; echo $_POST['txt_produto_id']['2']; echo $_POST['txt_produto_id']['3']; O melhor aqui, é você criar um laço para resgatar todos os valores que recebeu do form. Tá Willian. Sua solução parece boa. Mas você poderia ser mais claro de como posso executá-la ? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 13, 2009 Bom.. explica melhor oque você quer fazer. foreach($_POST['txt_produto_id'] as $txt_produto_id) { echo $txt_produto_id.'<br />'; }Já te apresentei como resgatar os valores... agora diz oque você quer com isso, e tenta explicar o sistema..se não fica difícil sugerir uma forma de usar. Compartilhar este post Link para o post Compartilhar em outros sites
Kante 0 Denunciar post Postado Janeiro 13, 2009 Oi Willian, O objetivo do sistema é ler uma tabela de produtos no Bd e listar todos eles numa tela web dentro de campos dinâmicos <input type="text">", de modo q tais valores possam ser alterados... Vou resumir ele baixo a partir da criação da tabela no bd para ser mais claro (vai dar um pouco de trabalho, mas vai ficar bem didático para mais gente também): //COMEÇO PELA CRIAÇÃO DA TABELA -- -- Estrutura da tabela `produto_teste` -- CREATE TABLE `produto_teste` ( `id_produto` int(10) unsigned NOT NULL auto_increment, `descricao` varchar(255) default NULL, `quantidade` int(10) unsigned default NULL, PRIMARY KEY (`id_produto`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=104 ; -- -- Extraindo dados da tabela `produto_teste` -- INSERT INTO `produto_teste` (`id_produto`, `descricao`, `quantidade`) VALUES (101, 'Produto Um', 10), (102, 'Produto Dois', 7), (103, 'Produto Três', 100); //AGORA VEM O FORM COM CAMPOS DINÂMICOS QUE LISTARÁ OS PRODUTOS DISPONÍVEIS (lista_produtos.php <?php include "conecta.php"; ?> <form name="frm_atualiza_produtos" id="id_frm_atualiza_produtos" action="confirma_atualizacao_especifica_produto.php" method="post"> <?php $sql_lista_produtos = "SELECT id_produto, descricao, quantidade FROM produto_teste ORDER BY descricao"; echo "CÓDIGO SQL:".$sql_lista_produtos; //Imprime só para testar a montagem do SQL $resposta = mysqli_query($conexao, $sql_lista_produtos); ?> <html> <body bgcolor="#99CCFF"> <head> <title> LISTAGEM DE PRODUTOS </title> </head> <TABLE> <tr > <th> Cod </th> <th> DESCRIÇÃO </th> <th> Quantidade </th> </tr> <?php for($i=0; $i<mysqli_num_rows($resposta); $i++) { $dados = mysqli_fetch_row($resposta); $id_produto = $dados[0]; $descricao = $dados[1]; $quantidade = $dados[2]; ?> <TR> <td> <input type="text" name="txt_produto_id[]" value=" <?php echo $id_produto; ?>" size="4"> </td> <TD> <input type ="text" name="txt_descricao" value= "<?php echo $descricao; ?>" </> </TD> <TD> <input type="text" name="txt_quantidade" value="<?php echo $quantidade; ?>" size="4"> </TD> <td valign="middle"> <input type="submit" name="Confirmar_alteracao" value="Atualizar"> </td> </TR> <?php } ?> //AGORA VIRIA O FORM COM A LINHA DE PRODUTO ALTERADA (atualiza_linha.php <?php include "conecta.php"; ?> <html> <head> <title>Linha de Registro atualizada </title> <body bgcolor="#FF9800"> <?php $i_cod_produto = $_POST["txt_produto_id"]; //Pega o código do Produto do form anterior $s_descricao = $_POST["txt_descricao"]; //Pega a descrição do produto do form anterior $i_quantidade = $_POST["txt_quantidade"]; //Pega a descrição do produto do form anterior echo "<BR> Variável Global que vem do Form anterior =". $i_cod_produto; ?> <br> <br> <table width="100%" border="4" bordercolor="#FF0000" bgcolor="#FF9800"> <!-- INÍCIO DA TABELA GERAL - Aqui vai o fundo geral e a borda geral--> <tr> <th align="left"> Cód.Produto </th> <th align="left" > Descricao </th> <th align="left"> Quantidade </th> </tr> <tr> <td align="left"> <?php echo $i_cod_produto; ?> </td> <td align="left" width="91%"> <b><?php echo $s_descricao; ?> </td> <th align="left"> <b><?php echo $i_quantidade; ?> </td> </tr> </table> <?php $s_atualizar_produto = "UPDATE produto SET descricao = '".$s_descricao."', quantidade = ".$i_quantidade.", WHERE id_produto = ".$i_cod_produto.""; echo "<BR>SQL=> $s_atualizar_produto <BR><BR>"; mysqli_query($conexao, $s_atualizar_produto) or die(mysqli_error($conexao)); echo "<script language='Javascript'> alert('A Atualização acaba de ser Registrada com sucesso. Os registros deste produto foram Alterados')</script>"; echo "<br><br>"; ?> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 13, 2009 tente usar o foreach, como o Willian disse. Já tentou? Compartilhar este post Link para o post Compartilhar em outros sites
Kante 0 Denunciar post Postado Janeiro 13, 2009 Ainda não tentei usar o foreach...Como faço para usá-lo ? E como ele vai achar o íncice q foi enviado ? Compartilhar este post Link para o post Compartilhar em outros sites
Kante 0 Denunciar post Postado Janeiro 13, 2009 Buenas pessoal...Ainda não tenho a solução que preciso (talvez tou usando errado o Foreach) Pelo Foreach consigo capturar o conteúdo de todos os posts referentes ao índice [txt_produto_id"], mas não tou conseguindo criar uma lógica de como catar o que que foi elecionado no form anterior e vem para este com Post. Sei q se ficar batendo cabeça aqui, vou achar uma forma, mas tou tri sem tempo pois o sistema tá atrasado...Portanto, agradeço para quem puder agilizar isso para mim. (= Usei-o-o da seguinte forma. // Verifica se algum id foi enviado if(isset($_POST["txt_produto_id"])) { echo "Os Ids Achados são:<BR>"; // Faz loop pelo array do q foi enviado foreach($_POST["txt_produto_id"] as $id) { echo "- " . $id . "<BR>"; } } else { echo "Nada enviado<br>"; } Agora, como fazer para pegar o campo referente a linha de registro q realmente foi enviada, dentro de várias ? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 13, 2009 O Willian mostrou como usar neste post Veja também: http://br2.php.net/foreach Compartilhar este post Link para o post Compartilhar em outros sites