Ir para conteúdo

POWERED BY:

Arquivado

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

Daniel Filho

[Resolvido] Alterando registros no banco de dados

Recommended Posts

Bom, continuando a saga do meu "sistema de notícias", tive que implementar algo a mais nele, ou pelo menos tentei.

 

Bom, no tópico anterior eu pedi ajuda para ajeitar a lógica sobre como excluir registros do banco de dados de forma seletiva.

 

Foi ai que os amigos Beraldo, Skyo, Renato Duarte e Quelipe (este em um outro tópico) tiveram a graça de me ajudar. Mais uma vez, obrigado!

 

Agora, quero ajuda na lógica da edição de um registro, no caso de uma notícia.

 

O que eu já fiz até agora foi: coloquei o link para o formulário de edição, fiz o formulario de edição e o mais importante, implantei o script responsável por dar o UPDATE no banco de dados.

 

O que eu não consegui: fazer a id ser preservada, ou seja, no meu código, a notícia alterada é sempre aquela que tiver o menor id (sendo ele um numero inteiro, automatico e não repetitivo), independentemente da notícia que eu sugiro para a edição.

 

Confiram os códigos!

 

1 - Link responsável por abrir o formulário de edição:

 

"<a href=\"editar.php?acao=editar_noticia&id=$id\" onclick=\"return confirm('Você confirma a edição da notícia?')\">EDITAR</a>"

Obs: acho que só assim, a id deveria ser passada ao longo do sistema por meio do $_GET, já que ela é preservada na URL.

 

2 - Página responsável pela inserção das novas informações (editar.php):

 

<?php
   if (isset ($_GET['acao'])) //se existir acao na url
  {
   $acao = $_GET['acao']; //cria a variável com o nome de 'acao' com o valor dela
   if ($acao == "editar_noticia") // testa se 'acao' é igual a excluir. Se for, é porque o usuário clicou em 'excluir'
   {
   include ('conexao.php'); // conecta ao MySQL
   }
  } 
?>
<form action="operacao.php">
  <input type="hidden" name="operacao" value="editar" />
    Título: <input type="text" name="titulo" size="60" /> <br /> <br />
    Notícia: <textarea name="noticia"></textarea> <br /> <br />
    Fonte: <input type="text" name="fonte" size="40" /> <br /> <br />
    URL da imagem: <input type="text" name="imagem" size="40" /> <br /> <br />
    <input type="submit" name="enviar" value="enviar" />
</form>

3 - Script responsável pela ação de alterar (operacao.php):

 

<?php
  $operacao = $_GET["operacao"];
  include "conexao.php";
  if ($operacao=="editar") {
	  $contador = "0";
	  $titulo = $_GET["titulo"];
	  $noticia = $_GET["noticia"];
	  $fonte = $_GET["fonte"];
	  $imagem = $_GET["imagem"];
	  $exibir_id = mysql_query("SELECT id FROM noticia");
	  $id = mysql_result($exibir_id, $contador, "id");
	  $alterar_sql = "UPDATE noticia SET titulo='$titulo', noticia='$noticia', fonte='$fonte', id='$id', imagem='$imagem' WHERE id='$id'";
	  $sql_acao = mysql_query($alterar_sql);
	  echo "Notícia editada com sucesso!";
	  mysql_close($conexao);
  }
?>

Bom, se alguém puder ajudar, fico grato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O correto nao seria voce resgatar a id em um campo hidden no formulario de edição??

 

ja tentou fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para resgatar o valor da id no formulario:

<input type="hidden" name="id" value="$id" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, adicionei o campo sugerido no formulário de edição e exclui as seguintes linhas do script:

 

$exibir_id = mysql_query("SELECT id FROM noticia");
$id = mysql_result($exibir_id, $contador, "id");

Substituindo por:

 

$id = $_GET["id"];

Não deu nenhum erro, aliás, a mensagem de "Notícia edita com sucesso!" é imprimida, porém, verificando, nenhum dado é alterado.

 

Se for de grande ajuda, quando eu clico em editar, o link fica assim:

 

http://localhost/sistema-noticias/editar.php?acao=editar_noticia&id=56

E quando peço pra enviar as alterações, fica assim:

 

http://localhost/sistema-noticias/operacao.php?operacao=editar&titulo=teste&noticia=teste&fonte=teste&imagem=teste&enviar=enviar&id=%24id

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pessoal, cansei de tentar, mas enfim consegui.

 

Desculpe o flood, mas ahco que fica mais organizado caso alguém queira entender o tópico.

 

Então, consegui passar os valores armazenados na id setando ela, por meio da função isset e criando uma variável dentro de editar.php, sendo que fiz através de um if conforme o códgio abaixo:

 

if (isset ($_GET['id']))
{
	$id = $_GET['id'];
}

Depois, ajeitei o campo do tipo hidden (dica sugerida pelo pensar) no formulário, pois o erro de tudo estava basicamente na forma errada como a id estava sendo escrita. Confiram:

 

<input type="hidden" name="id" value="<?php echo $id; ?>"  />

E por fim, o script responsável pela alteração, ficou assim:

 

if ($operacao=="editar") {
	  $titulo = $_GET["titulo"];
	  $noticia = $_GET["noticia"];
	  $fonte = $_GET["fonte"];
	  $imagem = $_GET["imagem"];
	  $id = $_GET["id"];
	  $alterar_sql = "UPDATE noticia SET titulo='$titulo', noticia='$noticia', fonte='$fonte', id='$id', imagem='$imagem' WHERE id='$id'";
	  $sql_acao = mysql_query($alterar_sql);
	  echo "Notícia editada com sucesso! $id";
	  mysql_close($conexao);
  }

Obrigado pela ajuda!

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.