Ir para conteúdo

POWERED BY:

Arquivado

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

Renan Parra

_POST recebe ultimo registro do WHILE

Recommended Posts

Fala galera tudo bem?
Estou procurando sobre esse problema mas não achei solução, vou explicar aqui o que ocorre.

 

Fiz uma página de orçamento com um formulário que é salva no banco, está funcionando 100%

 

Na minha página de administração, tenho 1 SELECT que pega todos os orçamentos com status = 0 (não respondidos) e mostra todas essas informações em 1 formulário, montei isso dentro do WHILE com limite de 3 registros por página.

Nesse formulário, eu coloco o preço do orçamento e tenho 1 botão de SALVAR que passa os dados por POST para a página que faz o UPDATE no banco e manda o e-mail para o cliente. Tudo isso está funcionando, só tenho 1 problema.

 

o _POST da pagina que faz o UPDATE no banco, recebe sempre os dados do último orçamento da tela, como eu tenho um limite de 3 orçamentos por página, se eu colocar o preço no primeiro orçamento e salvar (utilizando o botão salvar especifico desse orçamento) ele envia as informações do último orçamento, não sei se deu para entender... raciocinando aqui, isso tem logica, pois o while vai buscando as informações e montando, e a ultima que ele monta, é a que fica "salvo" os dados...


Agora, como posso fazer para que o sistema entenda que o botão salvar que eu apertei é do primeiro (ou segundo) registro da lista e não do terceiro (ultimo)?

 

Conto com a ajuda de vocês, desde já agradeço!

Obrigado. (código abaixo)

 

<?php
	// SELECT COM PAGINAÇÃO DO RESULTADO
	
	$limite = 3; // Define o limite de registros a serem exibidos com o valor cinco
	$pagina = $_GET['pag']; // Captura os dados da variável 'pag' vindo da url, onde contém o número da página atual

	// Se a variável $pagina não conter nenhum valor, então por padrão ela será posta com o valor 1 (primeira página)

	if(!$pagina)
	{
		$pagina = 1;
	}
	
	//Operação matemática que resulta no registro inicial a ser selecionado no banco de dados baseado na página atual
	
	$inicio = ($pagina * $limite) - $limite;
		// SELECT de todos os dados para exibição - Limite de 3
		$busca_orcamento = mysqli_query($conecta,"SELECT `tbl_orcamento`.*, `tbl_utilizacao`.`tipo_utilizacao` FROM `tbl_orcamento` INNER JOIN `tbl_utilizacao` ON `tbl_orcamento`.`idutilizacao` = `tbl_utilizacao`.`idutilizacao` WHERE `tbl_orcamento`.`orca_respondido` = 0 ORDER by `tbl_orcamento`.`data` ASC LIMIT $inicio,$limite;") or die(mysqli_error());
		
		// SELECT dos ID's não respondidos para contagem/paginação
		$consulta =  mysqli_query($conecta,"SELECT idorcamento FROM tbl_orcamento WHERE orca_respondido = 0;"); 
				
		// Captura o número do total de registros no nosso banco a partir da nossa consulta
		$total_registros = mysqli_num_rows($consulta);
		// Define o total de páginas a serem mostradas baseada na divisão do total de registros pelo limite de registros a serem mostrados
		$total_paginas = Ceil($total_registros / $limite);
?>

<form action="conclui_orcamento.php" method="POST" enctype="application/x-www-form-urlencoded" name="exibe_dados" target="_self" id="form_exibe_dados" >
<table width="944" border="1" align="left" cellpadding="0" cellspacing="0">
	<tr>
      <th width="45" align="center" valign="middle" bgcolor="#0099FF">ID Orç.</th>
      <th width="150" align="center" valign="middle" bgcolor="#0099FF">Nome</th>
      <th width="151" align="center" valign="middle" bgcolor="#0099FF">E-mail</th>
      <th width="90" align="center" valign="middle" bgcolor="#0099FF">Data</th>
      <th width="90" align="center" valign="middle" bgcolor="#0099FF">Telefone</th>
      <th width="35" align="center" valign="middle" bgcolor="#0099FF">GB</th>
      <th width="27" align="center" valign="middle" bgcolor="#0099FF"> PCs</th>
      <th width="84" align="center" valign="middle" bgcolor="#0099FF">Perfil Uso</th>
      <th width="38" align="center" valign="middle" bgcolor="#0099FF">_Eml_</th>
      <th width="48" align="center" valign="middle" bgcolor="#0099FF">(R$)Vlr.</th>
	  <th width="164" align="center" valign="middle" bgcolor="#0099FF">Enviar Proposta</th>
	</tr>
    
<?php if ($total_registros != 0) { 

while($exibe_dados = mysqli_fetch_array($busca_orcamento))

{ ?>  <!-- Vai repetir o codigo daqui para baixo -->

		<tr>
			<td>
      			<input name="idorca" type="text" id="idorca" title="ID do Orçamento" value="<?php {echo $exibe_dados['idorcamento'];}?>" size="6" readonly />
		</td>
			<td align='center' valign='middle'>
       		 	<input name="nome" type="text" id="nome" title="Nome do Cliente" value="<?php {echo $exibe_dados['nome'];}?>" size="25" readonly />
		</td>
			<td align='center' valign='middle'>
      			<input name="email" type="text" id="email" title="E-mail do Cliente" value="<?php echo $exibe_dados['email'];?>" size="25" readonly />
		</td>
			<td align='center' valign='middle'>
      			<input name="data" type="text" id="data" title="Orçamento Recebido na Data" value="<?php $data_mysql = $exibe_dados['data']; $timestamp = strtotime($data_mysql); echo date('d/m/Y H:i', $timestamp); ?>" size="15" readonly />
		</td>
			<td align='center' valign='middle'>
      			<input name="telefone" type="text" id="telefone" title="Telefone do Cliente"value="<?php echo $exibe_dados['telefone'];?>" size="15" readonly />
		</td>
			<td align='center' valign='middle'>
        		<input name="gb_estimado" type="text" id="gb_estimado" title="Orçar o valor para X GB."value="<?php echo $exibe_dados['gb_estimado'];?>" size="3" readonly />
		</td>
			<td align='center' valign='middle'>
          		<input name="qtda_computadores" type="text" id="qtda_computadores" title="Possiveis computadores a utilizar o sistema" value="<?php echo $exibe_dados['qtda_computadores'];?>" size="3" readonly />
		</td>
			<td align='center' valign='middle'>
          		<input name="utilidade" type="text" id="utilidade" title="Tipo do Cliente:" value="<?php echo $exibe_dados['tipo_utilizacao'];?>" size="14" readonly />
		</td>
			<td align='center' valign='middle'>
          		<input name="_eml_" type="text" id="_eml_" title="Cliente recebeu e-mail de resumo de seu orçamento?" value="<?php if ($exibe_dados['email_enviado'] != 1) { $enviado = 'Não'; } else { $enviado = 'Sim'; } echo $enviado; ?>" size="5" readonly />
		</td>
			<td align='center' valign='middle'>
          		<input name="preco" id="preco" type="text" title="Valor da proposta é" size="8" value="<?php echo $exibe_dados['valor_proposto'];?>" />
		</td>
        	<td width="164" rowspan="2" align='center' valign='middle' bgcolor="#FF6666"><input type="submit" value="ENVIAR PROPOSTA"></td>
	</tr>
		<tr>
			<td colspan='10' align='center' valign='middle'><textarea name="comentario" cols="90" rows="3" readonly class="resizeNo" id="comentario" title="Observações feitas pelo cliente.">
                	<?php echo $exibe_dados['comentario'];?>
                </textarea></td>
       	  </tr>
		<?php  } ?>
	</table>
</form>

<div id="Paginas">
	<?php // montagem dos links para acesso das paginas (Links) na tela
	// IF que mostra o link Primeira Página se você não esta na primeira pagina, se estiver na primeira pagina ele não mostra
		if ($pagina != 1) { 
        	echo '<a href="novo_orca.php?pag=1" title="Ir para Primeira Página">'.'<<< Primeira'.'</a>';
		} else {
			echo "";
		}
		// For que monta os links de acordo com a quantidade de paginas
            for($i=1; $i <= $total_paginas; $i++)
            {
                 if($pagina == $i)
                 {
                     echo " [".$i."] ";
                 }
                 else
                 {
                     echo '<a href="novo_orca.php?pag='.$i.'"> ['.$i.']</a>';
         
                 }
            }
			// IF que mostra o link Ultima Pagina se você não esta na Ultima pagina, se estiver na Ultima pagina ele não mostra
			if ($pagina != $total_paginas) {
        		echo '<a href="novo_orca.php?pag='.$total_paginas.'" title="Ir para Última Página"> Última >>></a>';
			} else {
				echo "";	
			}
        ?>

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém poderia me ajudar com esse problema?
Pesquisei o domingo todo e descobri que o problema está no nome e id do form, então criei a variavel $i dentro do while e no fim de cada while ele incrementa 1, esse problema foi resolvido, cada campo agora tem o seu ID exclusivo, inclusive o botão de enviar, mas quando eu mando enviar ele manda todos os dados, de todos os forms, e não somente os dados do form no qual eu cliquei no botão...

 

Falta algum tratamento nisso, mas não to achando qual.

Conto com a ajuda de vocês, obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom nao sei como voce esta recuperando via post mais voce pode colocar o update dentro de um while no arquivo

conclui_orcamento.php ...

 

while(list($NomeCampo, $ValorRetirado) = each($_POST)) {
 
  // colocar o SQL aqui dentro passando esses parametros: 
 echo " $NomeCampo - $ValorRetirado". "<hr />";
 
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim você pode fazer como o layo falou, tambem é possivel utilizar a seguinte manobra incluir um campo hidden booleano que ao alterar o orçamento ele altere para true este campo... com um javascript no change do campo altera-se de false para true, tambem é possivel você alterar o nome dos campos concatenando o id do orçamento:

 

 

name="preco<?php {echo $exibe_dados['idorcamento'];}?>"

 

do outro lado pegar com

 

preco = $_POST["preco".id];

 

Mas nem expliquei direito isso, porque a melhor forma de fazer isso que você esta querendo é utilizar um ajax com jquery para enviar os dados e salvar no clique do botão, após o retorno de true você poderia mudar a cor da linha para verde e escrever algo, tipo salvo com sucesso! ou coisa do genero.



Eis o que estava pensando:

 

http://www.htmlstaff.org/ver.php?id=17605

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.