Ir ao conteúdo
  • Cadastre-se

Erro ao fazer update


Posts recomendados

Boa noite, estou tentando fazer uma página do painel de administração do site, porém, eu faço o cadastro de vários endereços e quando eu tento fazer o

update ele atualiza todos os campos de todos os registros eu sei que preciso colocar o id para ele atualizar somente aquele id em questão, mas 

não estou sabendo onde colocar, fiz a condição WHERE, mas onde coloco o id no formulário?

Tenho 2 input submit, eu fiz em alguns posts no Google, porém, eles usam o a href, e eu não estou usando, podem me ajudar com este problema?

 

 

<script type="text/javascript" >
jQuery(function($){
   $("#cep").mask("99999-999",{placeholder:"00000-000"});
});
</script>
<div class="central border"><!-- inicio da div central -->
<body>
<?php
	$aviso_at_cons = "Favor cadastrar o Endereço!";
	$sql = "SELECT * from cons_end";
	try{
	$result = $connect->prepare($sql);
	$result->execute();
	$cont = $result->rowCount();
	if($cont>){
		while($cons_end = $result->FETCH(PDO::FETCH_OBJ)){
?>
<div id="form_agenda">
      <form method="post" action="" id="cadastro_agenda" name="cadastro" class="rounded" enctype="multipart/form-data">
			<p>Cadastrar o Endereço do Consultório</p><br />
			<p></p><br>
			
			<label>Cadastro Nº	: <small><?php echo utf8_decode($cons_end->cons_id); ?></small></label><br class="clear"><br>

			<label>Consultório: <small></small></label>
			<input name="cons_nome" size="53" type="text" value="<?php echo utf8_decode($cons_end->cons_nome); ?>" /><br class="clear"><br>
	
			<label>Endereço: <small></small></label>
			<input name="cons_end" size="53" type="text" value="<?php echo utf8_decode($cons_end->cons_end); ?>" /><br class="clear"><br>
			
			<label>Cep: <small></small></label>
			<input id="cep" name="cons_cep" size="53" type="text" value="<?php echo utf8_decode($cons_end->cons_cep); ?>" /><br class="clear"><br>
			
			<label>Bairro: <small></small></label>
			<input name="cons_bairro" size="53" type="text" value="<?php echo utf8_decode($cons_end->cons_bairro) ?>" /><br class="clear"><br>

			<label>Cidade: <small></small></label>
			<input name="cons_cidade" size="53" type="text" value="<?php echo utf8_decode($cons_end->cons_cidade) ?>" /><br class="clear"><br>
			
			<label>Estado: <small></small></label>
			<input name="cons_estado" size="53" type="text" value="<?php echo utf8_decode($cons_end->cons_estado); ?>" /><br class="clear"><br>

			<input type="submit" class="botao_cad_agenda" name="up_cons_end" value="Atualizar" />
			<input type="submit" class="" name="excluir" value="Excluir Endereço" />
			<button class="botao_canc_cad_agenda"><a href="index.php">Cancelar</a></button><br /><br />
<?php	
	  }}else{
				echo'<script language="javascript" charset="utf-8">
							alert("'.$aviso_at_cons.'");
							window.location="adm.php?pg=cad_end_cons";
							</script>';
			}
			}catch(PDOException $e){
			echo 'ERROR:' .$e->getMessage();}		
?>
<?php
      if(isset($_POST['up_cons_end'])){
			$up_cons_nome = utf8_encode($_POST['cons_nome']);
			$up_cons_end = utf8_encode($_POST['cons_end']);
			$up_cons_cep = utf8_encode($_POST['cons_cep']);
			$up_cons_bairro = utf8_encode($_POST['cons_bairro']);
			$up_cons_cidade = utf8_encode($_POST['cons_cidade']);
			$up_cons_estado = utf8_encode($_POST['cons_estado']);
		
			$update_cons_end = "UPDATE cons_end SET cons_nome=:cons_nome, cons_end=:cons_end, cons_cep=:cons_cep, cons_bairro=:cons_bairro, cons_cidade=:cons_cidade, cons_estado=:cons_estado WHERE cons_id=:cons_id";
			
			try{
			$result = $connect->prepare($update_cons_end);
			$result->bindParam(':cons_nome', $up_cons_nome, PDO::PARAM_STR);
			$result->bindParam(':cons_end', $up_cons_end, PDO::PARAM_STR);
			$result->bindParam(':cons_cep', $up_cons_cep, PDO::PARAM_STR);
			$result->bindParam(':cons_bairro', $up_cons_bairro, PDO::PARAM_STR);
			$result->bindParam(':cons_cidade', $up_cons_cidade, PDO::PARAM_STR);
			$result->bindParam(':cons_estado', $up_cons_estado, PDO::PARAM_STR);
			$result->execute();
			$cont = $result->rowCount();
			if($cont>){
			echo '<br /><div id="cad_evento_sucesso">
			      <p>Página Atualizada com sucesso!</p>
			      </div><br /><br />';			
			echo '<script language="javascript">window.setTimeout("location.href=\'adm.php?pg=adm_end_cons\'",1000)</script>';
			exit;
			}else{
				echo'<br /><div id="cad_evento_erro">
			      <p>Erro ao efetuar cadastro, verifique as informações e tente novamente.</p>
			      </div><br /><br />';
			echo '<script language="javascript">window.setTimeout("location.href=\'adm.php\'",3000)</script>';
			}
			}catch(PDOException $e){
			echo 'ERROR:' .$e->getMessage();
			}
}
?>
</form>
</div>

<div class="clear"></div>  
</div><!-- fim da div central -->

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@carecazn Seria no action do form.  Recomendo que altere de ao invés enviar os dados para a mesma página, mande para outra somente com o php recebendo via GET.

 

exemplo usando seu código:

Formulário:

 

<script type="text/javascript" >
jQuery(function($){
   $("#cep").mask("99999-999",{placeholder:"00000-000"});
});
</script>
<div class="central border"><!-- inicio da div central -->
<body>
<?php
	$aviso_at_cons = "Favor cadastrar o Endereço!";
	$sql = "SELECT * from cons_end";
	try{
	$result = $connect->prepare($sql);
	$result->execute();
	$cont = $result->rowCount();
	if($cont>){
		while($cons_end = $result->FETCH(PDO::FETCH_OBJ)){
?>
<div id="form_agenda">
      <form method="post" action="recebeDados.php?id=<?php echo $cons_end->cons_id; ?>" id="cadastro_agenda" name="cadastro" class="rounded" enctype="multipart/form-data">
			<p>Cadastrar o Endereço do Consultório</p><br />
			<p></p><br>
			
			<label>Cadastro Nº	: <small><?php echo utf8_decode($cons_end->cons_id); ?></small></label><br class="clear"><br>

			<label>Consultório: <small></small></label>
			<input name="cons_nome" size="53" type="text" value="<?php echo utf8_decode($cons_end->cons_nome); ?>" /><br class="clear"><br>
	
			<label>Endereço: <small></small></label>
			<input name="cons_end" size="53" type="text" value="<?php echo utf8_decode($cons_end->cons_end); ?>" /><br class="clear"><br>
			
			<label>Cep: <small></small></label>
			<input id="cep" name="cons_cep" size="53" type="text" value="<?php echo utf8_decode($cons_end->cons_cep); ?>" /><br class="clear"><br>
			
			<label>Bairro: <small></small></label>
			<input name="cons_bairro" size="53" type="text" value="<?php echo utf8_decode($cons_end->cons_bairro) ?>" /><br class="clear"><br>

			<label>Cidade: <small></small></label>
			<input name="cons_cidade" size="53" type="text" value="<?php echo utf8_decode($cons_end->cons_cidade) ?>" /><br class="clear"><br>
			
			<label>Estado: <small></small></label>
			<input name="cons_estado" size="53" type="text" value="<?php echo utf8_decode($cons_end->cons_estado); ?>" /><br class="clear"><br>

			<input type="submit" class="botao_cad_agenda" name="up_cons_end" value="Atualizar" />
			<input type="submit" class="" name="excluir" value="Excluir Endereço" />
			<button class="botao_canc_cad_agenda"><a href="index.php">Cancelar</a></button><br /><br />
<?php	
	  }}else{
				echo'<script language="javascript" charset="utf-8">
							alert("'.$aviso_at_cons.'");
							window.location="adm.php?pg=cad_end_cons";
							</script>';
			}
			}catch(PDOException $e){
			echo 'ERROR:' .$e->getMessage();}		
?>

Veja a linha:   action="recebeDados.php?id=<?php echo $cons_end->cons_id; ?>"   onde é enviado os dados para o arquivo recebeDados.php  com o ID do registro para ser modificado.

 

Arquivo recebeDados.php:

<?php
      $id = $_GET['id'];

      if(isset($_POST['up_cons_end'])){
			$up_cons_nome = utf8_encode($_POST['cons_nome']);
			$up_cons_end = utf8_encode($_POST['cons_end']);
			$up_cons_cep = utf8_encode($_POST['cons_cep']);
			$up_cons_bairro = utf8_encode($_POST['cons_bairro']);
			$up_cons_cidade = utf8_encode($_POST['cons_cidade']);
			$up_cons_estado = utf8_encode($_POST['cons_estado']);
		
			$update_cons_end = "UPDATE cons_end SET cons_nome=:cons_nome, cons_end=:cons_end, cons_cep=:cons_cep, cons_bairro=:cons_bairro, cons_cidade=:cons_cidade, cons_estado=:cons_estado WHERE cons_id= $id";
			
			try{
			$result = $connect->prepare($update_cons_end);
			$result->bindParam(':cons_nome', $up_cons_nome, PDO::PARAM_STR);
			$result->bindParam(':cons_end', $up_cons_end, PDO::PARAM_STR);
			$result->bindParam(':cons_cep', $up_cons_cep, PDO::PARAM_STR);
			$result->bindParam(':cons_bairro', $up_cons_bairro, PDO::PARAM_STR);
			$result->bindParam(':cons_cidade', $up_cons_cidade, PDO::PARAM_STR);
			$result->bindParam(':cons_estado', $up_cons_estado, PDO::PARAM_STR);
			$result->execute();
			$cont = $result->rowCount();
			if($cont>){
			echo '<br /><div id="cad_evento_sucesso">
			      <p>Página Atualizada com sucesso!</p>
			      </div><br /><br />';			
			echo '<script language="javascript">window.setTimeout("location.href=\'adm.php?pg=adm_end_cons\'",1000)</script>';
			exit;
			}else{
				echo'<br /><div id="cad_evento_erro">
			      <p>Erro ao efetuar cadastro, verifique as informações e tente novamente.</p>
			      </div><br /><br />';
			echo '<script language="javascript">window.setTimeout("location.href=\'adm.php\'",3000)</script>';
			}
			}catch(PDOException $e){
			echo 'ERROR:' .$e->getMessage();
			}
}
?>

 

Obviamente, precisa dar uma atenção que isto não é seu código "arrumado" mas sim um exemplo dele. 

A questão é que você precisa enviar o ID por parâmetro

 

Evite sempre de enviar dados de formulários para a mesma página. use sempre 2 arquivos diferentes, ainda mais porque você pode juntar isto com o ajax, que é a requisição assíncrona.

Link para o comentário
Compartilhar em outros sites

Consegui resolver!

Criei um campo

<input type="hidden" name="id" value="<?php echo utf8_decode($cons_end->cons_id); ?>" />

E então passei a ter uma post id, neste caso consegui fazer o update e o delete na mesma página.

 

Porque não é legar fazer action na mesma página?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderador

@carecazn

Isso é uma questão de boa prática da programação. Separar tudo que dá para separar.

 

A maioria dos iniciantes pensam que enviando o dado para a mesma página, dá aquela sensação de não sair da página.

Mas de fato ela sai. Além disso o código se torna maior porque tem que testar mais coisas com o isset() que é a função responsável pelo teste valor da variável.

 

O mais indicado é você separar as coisas, e utilizar ajax quando necessário( para não sair da página)

 

Vendo por este lado, seu código poderia estar mais otimizado, por exemplo retirando aquele monte de retorno com javascript e etc..  usaria a função $.ajax()  do jquery  para apresentar os retornos. enfim.  Time que tá ganhando não se mexe. 

Sugiro você criar outro projeto na sua IDE para testar as novas dicas! :thumbsup:

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!