Ir para conteúdo

POWERED BY:

Arquivado

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

GustavoLopesC

Função UPDATE $id pegando id errado

Recommended Posts

Olá !

 

Tenho uma página que faz uma busca na db mysql a partir do que foi digitado no campo de busca.

Ele me retorna somente com um registro.

 

Então nesta mesma página tenho um campo e botão que alteram um dado desse registro . Para funcionar no resultado da busca , utilizei o $id como referência. Mas ele está indo sempre para o id errado (sempre o primeiro id da tabela) , ao inves de alterar o registro encontrado na busca. O que tem de errado ?

 

Segue código:

<?php
include "config.php";
?>

<?php
mysql_set_charset('utf8');
ini_set('default_charset','UTF-8');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Resultado Busca</title>
</head>

<body>

<a href="/admin/painel/buscar.php">
<img src="/img/back.png" /></a
><br/>
<br/>
<br/>

<?php
$buscar=$_POST['buscar'];
$sql = mysql_query("SELECT * FROM trocasrecebidas WHERE correios LIKE '%".$buscar."%'");
$row = mysql_num_rows($sql);
if ($row > 0) {
	while($linha = mysql_fetch_array($sql)) {
$id = $linha['id'];
$nome = $linha['nome'];
$email=$linha['email'];
$telefone=$linha['telefone'];
$pedido=$linha['pedido'];
$correios=$linha['correios'];
$endereco=$linha['endereco'];
$cep=$linha['cep'];
$cidade=$linha['cidade'];
$estado=$linha['estado'];
$motivodefeito=$linha['motivodefeito'];
$motivoerrado=$linha['motivoerrado'];
$motivodesistiu=$linha['motivodesistiu'];
echo "<strong>ID: </strong>".@$id;
echo "<br/><br/>";
echo "<strong>Nome: </strong>".@$nome;
echo "<br/><br/>";
echo "<strong>Email: </strong>".@$email;
echo "<br/><br/>";
echo "<strong>Telefone: </strong>".@$telefone;
echo "<br/><br/>";
echo "<br/><br/>";echo "<br/>";
echo "<strong>N°do pedido: </strong>".@$pedido;
echo "<br/><br/>";
echo "<strong>Cód. de rastreamento: </strong>".@$correios;
echo "<br/><br/>";
echo "<strong>Produto com defeito: </strong>".@$motivodefeito;
echo "<br/>";
echo "<strong>Produto errado: </strong>".@$motivoerrado;
echo "<br/>";
echo "<strong>Desistência: </strong>".@$motivodesistiu;
echo "<br/>";
echo "<br/><br/>";echo "<br/>";
echo "<strong>Endereço: </strong>".@$endereco;
echo "<br/><br/>";
echo "<strong>CEP: </strong>".@$cep;
echo "<br/><br/>";
echo "<strong>Cidade: </strong>".@$cidade;
echo "<br/><br/>";
echo "<strong>Estado: </strong>".@$estado;
echo "<br/><br/>";echo "<br/>";echo "<br/><br/>";
	}
} else {
	echo "Nenhum registro encontrado.";
}
?>
<p>
<p>
<p>
<p>
<form name="button" method="post" action="">
<input type="submit" value="Imprimir" />
</form>


<br/><br/>
<form name="searchform" method="post" action="?a=ok">
<input type="text" name="newrastreio" />  <input type="submit" value="Novo Rastreamento" />
</form>
<?php
if ( isset( $_GET['a'] ) && $_GET['a'] == 'ok'   ) {
$newrastreio=$_POST['newrastreio'];
$alterarDado = mysql_query("UPDATE trocasrecebidas SET newrastreio = '".$newrastreio."' WHERE id = '".@$id."'") or die (mysql_error());

}
?>
</body>
</html>

No caso , a parte do problema é:

<form name="searchform" method="post" action="?a=ok">
<input type="text" name="newrastreio" />  <input type="submit" value="Novo Rastreamento" />
</form>
<?php
if ( isset( $_GET['a'] ) && $_GET['a'] == 'ok'   ) {
$newrastreio=$_POST['newrastreio'];
$alterarDado = mysql_query("UPDATE trocasrecebidas SET newrastreio = '".$newrastreio."' WHERE id = '".@$id."'") or die (mysql_error());

}
?>

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

te perguntou onde está essa variável "$id" ? se for aquela desta linha:

$id = $linha['id'];

não vai funcionar mesmo! essa variável só é valida dentro do loop (while), até porque ela muda de valor sempre que encontrar um registro. não entendi bem o que você quer fazer então não consigo te dar uma solução, mas o problema é este que citei a cima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

te perguntou onde está essa variável "$id" ? se for aquela desta linha:

$id = $linha['id'];

não vai funcionar mesmo! essa variável só é valida dentro do loop (while), até porque ela muda de valor sempre que encontrar um registro. não entendi bem o que você quer fazer então não consigo te dar uma solução, mas o problema é este que citei a cima.

 

Sim , estou puxando exatamente dai.

Como ele de certa forma funcionou , pensei que estava correto. (ele funciona , mas ele altera sempre o id 1 ao inves do id que foi encontrado na pesquisa.

 

O que eu quero é alterar o campo "newrastreio" do registro encontrado na pesquisa.

Qual a melhor solução ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

2 alterativas:

 

1) Dentro do while, adicionar um formulário abaixo de cada registro, e como eu disse estando DENTRO DO WHILE, a sua $id não vai dar este problema de retornar sempre 1.

 

2) Dentro do while, também, adicionar um botão, algo como "Editar", jogando pra um link de uma página com o formulário de edição e passar o id do item que deseja editar via get

Compartilhar este post


Link para o post
Compartilhar em outros sites

2 alterativas:

 

1) Dentro do while, adicionar um formulário abaixo de cada registro, e como eu disse estando DENTRO DO WHILE, a sua $id não vai dar este problema de retornar sempre 1.

 

2) Dentro do while, também, adicionar um botão, algo como "Editar", jogando pra um link de uma página com o formulário de edição e passar o id do item que deseja editar via get

 

O 1) seria parecido com isso:

<?php
include "config.php";
?>

<?php
mysql_set_charset('utf8');
ini_set('default_charset','UTF-8');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Resultado Busca</title>
</head>

<body>

<a href="/admin/painel/buscar.php">
<img src="/img/back.png" /></a
><br/>
<br/>
<br/>

<?php
$buscar=$_POST['buscar'];
$sql = mysql_query("SELECT * FROM trocasrecebidas WHERE correios LIKE '%".$buscar."%'");
$row = mysql_num_rows($sql);
if ($row > 0) {
	while($linha = mysql_fetch_array($sql)) {
$id = $linha['id'];
$nome = $linha['nome'];
$email=$linha['email'];
$telefone=$linha['telefone'];
$pedido=$linha['pedido'];
$correios=$linha['correios'];
$endereco=$linha['endereco'];
$cep=$linha['cep'];
$cidade=$linha['cidade'];
$estado=$linha['estado'];
$motivodefeito=$linha['motivodefeito'];
$motivoerrado=$linha['motivoerrado'];
$motivodesistiu=$linha['motivodesistiu'];
echo "<strong>ID: </strong>".@$id;
echo "<br/><br/>";
echo "<strong>Nome: </strong>".@$nome;
echo "<br/><br/>";
echo "<strong>Email: </strong>".@$email;
echo "<br/><br/>";
echo "<strong>Telefone: </strong>".@$telefone;
echo "<br/><br/>";
echo "<br/><br/>";echo "<br/>";
echo "<strong>N°do pedido: </strong>".@$pedido;
echo "<br/><br/>";
echo "<strong>Cód. de rastreamento: </strong>".@$correios;
echo "<br/><br/>";
echo "<strong>Produto com defeito: </strong>".@$motivodefeito;
echo "<br/>";
echo "<strong>Produto errado: </strong>".@$motivoerrado;
echo "<br/>";
echo "<strong>Desistência: </strong>".@$motivodesistiu;
echo "<br/>";
echo "<br/><br/>";echo "<br/>";
echo "<strong>Endereço: </strong>".@$endereco;
echo "<br/><br/>";
echo "<strong>CEP: </strong>".@$cep;
echo "<br/><br/>";
echo "<strong>Cidade: </strong>".@$cidade;
echo "<br/><br/>";
echo "<strong>Estado: </strong>".@$estado;
echo "<br/><br/>";echo "<br/>";echo "<br/><br/>";

if ( isset( $_GET['a'] ) && $_GET['a'] == 'ok'   ) {
$newrastreio=$_POST['newrastreio'];
$alterarDado = mysql_query("UPDATE trocasrecebidas SET newrastreio = '".$newrastreio."' WHERE id = '".$id."'") or die (mysql_error());

}
	}
} else {
	echo "Nenhum registro encontrado.";
}
?>
<p>
<p>
<p>
<p>
<form name="button" method="post" action="">
<input type="submit" value="Imprimir" />
</form>


<br/><br/>
<form name="searchform" method="post" action="?a=ok">
<input type="text" name="newrastreio" />  <input type="submit" value="Novo Rastreamento" />
</form>

</body>
</html>

Desta forma ele altera TODOS os registros. rsrs

 

Se não for abusar da sua boa vontade , poderia me passar o código ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
include "config.php";
?>

<?php
mysql_set_charset('utf8');
ini_set('default_charset','UTF-8');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Resultado Busca</title>
</head>

<body>

<a href="/admin/painel/buscar.php">
<img src="/img/back.png" /></a
><br/>
<br/>
<br/>

<?php
$buscar=$_POST['buscar'];
$sql = mysql_query("SELECT * FROM trocasrecebidas WHERE correios LIKE '%".$buscar."%'");
$row = mysql_num_rows($sql);
if ($row > 0) {
	while($linha = mysql_fetch_array($sql)) {
$id = $linha['id'];
$nome = $linha['nome'];
$email=$linha['email'];
$telefone=$linha['telefone'];
$pedido=$linha['pedido'];
$correios=$linha['correios'];
$endereco=$linha['endereco'];
$cep=$linha['cep'];
$cidade=$linha['cidade'];
$estado=$linha['estado'];
$motivodefeito=$linha['motivodefeito'];
$motivoerrado=$linha['motivoerrado'];
$motivodesistiu=$linha['motivodesistiu'];
echo "<strong>ID: </strong>".@$id;
echo "<br/><br/>";
echo "<strong>Nome: </strong>".@$nome;
echo "<br/><br/>";
echo "<strong>Email: </strong>".@$email;
echo "<br/><br/>";
echo "<strong>Telefone: </strong>".@$telefone;
echo "<br/><br/>";
echo "<br/><br/>";echo "<br/>";
echo "<strong>N°do pedido: </strong>".@$pedido;
echo "<br/><br/>";
echo "<strong>Cód. de rastreamento: </strong>".@$correios;
echo "<br/><br/>";
echo "<strong>Produto com defeito: </strong>".@$motivodefeito;
echo "<br/>";
echo "<strong>Produto errado: </strong>".@$motivoerrado;
echo "<br/>";
echo "<strong>Desistência: </strong>".@$motivodesistiu;
echo "<br/>";
echo "<br/><br/>";echo "<br/>";
echo "<strong>Endereço: </strong>".@$endereco;
echo "<br/><br/>";
echo "<strong>CEP: </strong>".@$cep;
echo "<br/><br/>";
echo "<strong>Cidade: </strong>".@$cidade;
echo "<br/><br/>";
echo "<strong>Estado: </strong>".@$estado;
echo "<br/><br/>";echo "<br/>";echo "<br/><br/>";
echo '
<form name="searchform" method="post" action="?a=ok&id='.$id.'">
<input type="text" name="newrastreio" />  <input type="submit" value="Novo Rastreamento" />
</form>
';
	}
} else {
	echo "Nenhum registro encontrado.";
}
?>
<p>
<p>
<p>
<p>
<form name="button" method="post" action="">
<input type="submit" value="Imprimir" />
</form>
<br/><br/>
<?php
if ( isset( $_GET['a'] ) && $_GET['a'] == 'ok'   ) {
$newrastreio=$_POST['newrastreio'];
$id = (int) addslashes($_GET['id']);
$alterarDado = mysql_query("UPDATE trocasrecebidas SET newrastreio = '".$newrastreio."' WHERE id = '".$id."'") or die (mysql_error());

}
?>

</body>
</html>

teste este codigo

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.