Ir ao conteúdo
  • Cadastre-se

Dados duplicados no MYSQL, como resolver?


Posts recomendados

Olá pessoal, boa noite!

De um tempo pra cá estou tendo um problema chato com meu banco de dados mysql,

o problema é, tudo que eu envio pro banco de dados através de um campo textarea, é

duplicado, por exemplo se eu envio "teste" quando vou exibir a informação na página,

ele está assim:

teste

 

teste

 

Olhei no phpmyadmin e obviamente também há uma entrada duplicada.

 

Segue abaixo meu código:

Formulário onde escrevo o que quero publicar, campo textarea com plugin de edição de texto:

 

<style type="text/css">	body {		background-color: #A2D7FB;	}</style>    <!-- TinyMCE --><script type="text/javascript" src="tinymce_pt/jscripts/tiny_mce/tiny_mce.js"></script><script type="text/javascript"   src="tinymce_pt/jscripts/tiny_mce/plugins/tinybrowser/tb_tinymce.js.php"></script><script type="text/javascript">	tinyMCE.init({		// General options    language : "pt",		mode : "textareas",		theme : "advanced",		plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",		// Theme optionstheme_advanced_buttons1:"code,bold,italic,underline,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,cleanup,link,unlink,image,table,formatselect,fontselect,fontsizeselect,forecolor,backcolor,fullscreen",		// Theme options		theme_advanced_buttons2 : "",		theme_advanced_buttons3 : "",		theme_advanced_buttons4 : "",		theme_advanced_toolbar_location : "top",		theme_advanced_toolbar_align : "left",		theme_advanced_statusbar_location : "bottom",		theme_advanced_resizing : true,		// Example content CSS (should be your site CSS)	 content_css : "css/content.css",		// Drop lists for link/image/media/template dialogs		template_external_list_url : "lists/template_list.js",		external_link_list_url : "lists/link_list.js",		external_image_list_url : "lists/image_list.js",		media_external_list_url : "lists/media_list.js",    file_browser_callback : "tinyBrowser",		// Replace values for the template plugin		template_replace_values : {			username : "Some User",			staffid : "991234"		}	});</script><div id="mensagem"><div id="titulo" align="left" style="font-family:Gotham, 'Helvetica Neue', Helvetica, Arial, sans-serif; color:#0974AE;"><p><strong>Adicionar/Editar Mensagem</strong></p></div><table width="200" border="0" cellspacing="0" cellpadding="0">  <tr>    <td><form name="formulario" method="post" action="enviar.php">      <table width="700" height="380" border="0" cellspacing="0" cellpadding="0">        <tr>          <td height="323"><textarea name="noticias" id="noticias" cols="90" rows="30"><?php error_reporting(E_ALL ^ E_DEPRECATED);include ("conecta.php");mysql_select_db("gebem");$result = mysql_query('SELECT noticias FROM noticias');while($row = mysql_fetch_array($result)){echo $row['noticias'];}?></textarea></td>        </tr>        <tr>          <td height="19"> </td>        </tr>        <tr>          <td height="37"><input type="submit" formaction="enviar.php" value="Enviar Mensagem"></td>        </tr>        </table>    </form></td>  </tr></table></div></body>

enviar.php

<?php error_reporting(E_ALL ^ E_DEPRECATED);include ("conecta.php");$noticias = $_POST['noticias'];$id = ['id'];mysql_select_db("gebem");$sql= mysql_query("UPDATE noticias SET noticias= '$noticias'");$inserir = $sql;if ($inserir) {echo "<script language='javascript' type='text/javascript'>alert('Mensagem publicada com sucesso!!!');window.location.href='content.html';</script>";}else {echo "<script language='javascript' type='text/javascript'>alert('Ocorreu um erro, tente novamente!');window.location.href='content.html';</script>";}mysql_close($con); ?>

Alguém pode me ajudar?

Desde já muitooo obrigado!!!

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Fábio Corrêa Vitorino

 

Podes mostrar por print como está no seu banco de dados? 

 

esta linha:  $id = ['id'];  é errado.

 

deves trazer o ID via GET

 

O mysql é obsoleto.... use o mysqli  que é a mais recente extensão.

 

Sinceramente não sei o que se passa..normalmente quando inserimos um dado ele não é duplicado a menos que tenha algo de errado com a modelagem do banco.. ou dentro de um laço de repetição no php

Link para o comentário
Compartilhar em outros sites

Boa noite,

 

Tirei uma ss do que está acontecendo.

Neste caso eu inseri a palavra "teste" uma unica vez no mysql, tanto no banco quanto na hora de exibir fica assim:

Untitled.png

 

Eu tinha falado que estava duplicando a informação, mas agora já esta diferente, ele guardou 6x a informação oO.

 

O que pode ser?

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Fábio Corrêa Vitorino

 

Algo pode estar acontecendo no momento que tu registra e depois atualiza..  nos códigos acima eu só vi o de update set.  poderia postar o do insert?  outra coisa que pode estar acontecendo é modelagem de errada no banco de dados.. parece estar acontecendo uma inconsistência de dados a partir da redundância dos dados.

Link para o comentário
Compartilhar em outros sites

@dif

 

Boa noite!

Então, o que acontece, eu não fiz um comando de insert, eu apenas atualizo as informações, é um sisteminha bem simples de postagem de noticia, na hora que o cara abre o painel administrativo e vai editar/escrever uma noticia, fiz um select no banco pra exibir a noticia(texto) pra pessoa poder editar a partir daí.

 

Meu banco está assim:

Untitled.png

 

Só lembrando que esse problema está acontecendo em todas as tabelas.

 

Mais uma vez, muito obrigadoo!

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Fábio Corrêa Vitorino

 

Parece-me que está duplicando pela falta de um identificador único de chave primária nas tabelas.

 

Acompanhe os passos de criação:

 

NuE2Kfi.png

 

Então a estrutura tem que ficar assim:

m3686mZ.png

 

Uma coisa que chamo a atenção:

 

Se é uma notícia, a pessoa só vai poder ler se o adm não trocar.  caso contrário ela se perde.. não tem sentido.

 

Então é meio desnecessário o update set.. mas sim sempre gravar um novo registro a cada noticia.. 

 

Recomendo também desmiuçar a tabela..  criar uma tabela só para noticias outra só para palestras... e etc.. 

Acredito que seja isso a causa da inconsistência de dados pela redundância.

 

O update set só deve ser usado caso queria alterar alguma informação em específico.. agora no caso de notícias por exemplo toda vez que for publicar uma notícia SEMPRE crie um registro novo com o INSERT into... assim elas terão ID's diferentes, e nunca se duplicarão.

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

  • mês depois...
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...