Ir para conteúdo

POWERED BY:

Arquivado

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

Kante

Problemas ao recuperar campo dinâmico via $_POST num formulário

Recommended Posts

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

$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 array

EX:

 

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.