Every time I try to register a new comment it duplicates in my database. It loads the comment through ajax, but after I refresh the page the duplicate comment appears.
<?php
require_once("classes/dao/UsuarioDAO.class.php"); //Chama a classe UsuarioDAO.
require_once("classes/dao/ComentarioDAO.class.php"); //Chama a classe comentarioDAO.
require_once("classes/entidade/Comentario.class.php"); //Chama a classe comentario, que é nossa entidade.
require_once("classes/entidade/Usuario.class.php"); //Chama a classe usuario
$usuarioDAO = new UsuarioDAO();
$usuario = new Usuario();
$comentarioDAO = new ComentarioDAO();
$comentario = new Comentario();
if (@$_GET['go'] == 'sair') {
$usuarioDAO->sair();
echo "<meta http-equiv='refresh' content='0, index.php'>";
}
if (isset($_GET['txtComentario'])) {
$teste = $_GET['txtComentario'];
$comentario->setComentario($_GET["txtComentario"]);
if ($comentarioDAO->cadatrarComentario($comentario)) {
?>
<script type="text/javascript">
alert("Comentário gravado com sucesso.");
</script>
<?php
} else {
?>
<script type="text/javascript">
alert("Erro ao gravar comentário.");
</script>
<?php
}
}
?>
<?php
require_once('indexAjax.php');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Arrays- Comentário</title>
<link rel="stylesheet" href="css/style.css" type="text/css" media="all" />
</head>
<body>
<div id="dvCentro">
<div id="dvComentario">
<?php
if(isset($_SESSION["ID_USER"]))
{
$usuarioDAO->exibirUserLogado($usuario);
$nome = $usuario->getNome();
$email = $usuario->getEmail();
?>
<form method="get" action="#" name="frmComentario">
<table>
<tr>
<td class="texto">Nome:</td>
<td><input type="text" name="txtNome" value="<?php echo$nome; ?>" disabled/></td>
</tr>
<tr>
<td class="texto">E-mail:</td>
<td><input type="text" name="txtEmail" value="<?php echo $email; ?>" disabled/></td>
</tr>
<tr>
<td class="texto">Comentário:</td>
<td></td>
</tr>
<tr>
<td colspan="2">
<textarea name="txtComentario" id="txtComentario"></textarea>
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="» Comentar" /></td> 
</tr>
<tr>
<a href="?go=sair">Sair</a><br><br>
</tr>
</table>
</form>
<?php
}else{
echo "Faca Login para comentar";
?>
<td colspan="2"><a href="login.php"><input type="submit" name="btnSubmit" value="Login" /></a></td>
<td colspan="2"><a href="cadastro.php"><input type="submit" name="btnSubmit" value="Cadastro" /></a></td>  
<?php
}
?>
</div>
<br />Comentarios
<div id="dvLerComentario">
<?php
foreach ($comentarioDAO->consultarComentario() as $consulta) {
?>
<p><b>Nome: </b> <?= $consulta['nome']; ?></p>
<p><b>Comentário: </b> <?= $consulta['comentario']; ?></p>
<p><b>Data: </b> <?= $consulta['data']; ?>
<b>Hora: </b> <?= $consulta['hora']; ?>
</p>
<hr /><br />
<?php
}
?>
</div>
</div>
</body>
</html>
<?php
include('indexAjax.php');
?>
<script>
/** * Função para criar um objeto XMLHTTPRequest */
function CriaRequest() {
try{
request = new XMLHttpRequest();
}catch (IEAtual){
try{
request = new ActiveXObject("Msxml2.XMLHTTP");
}catch(IEAntigo){
try{
request = new ActiveXObject("Microsoft.XMLHTTP");
}catch(falha){
request = false;
}
}
}
if (!request)
alert("Seu Navegador não suporta Ajax!");
else
return request;
}
/** * Função para enviar os dados */
function getDados() {
var comentario = document.getElementById("txtComentario").value;
var result = document.getElementById("comentario");
var xmlreq = CriaRequest();
//Inicia uma requisição
xmlreq.open("GET","indexAjax.php?txtComentario="+comentario,true);
//atribui uma funcao para ser executada sempre que houver uma mudanca de dado
xmlreq.onreadystatechange = function(){
//verifica se foi concluído com sucesso e a conexão fechada (readyState=4)
if (xmlreq.readyState == 4) {
//verifica se o arquivo foi encontrado com sucesso
if (xmlreq.status ==200) {
result.innerHTML = xmlreq.responseText;
}else{
result.innerHTML = "Erro: "+xmlreq.statusText;
}
}
};
xmlreq.send(null);
}
</script>
<?php
session_start();
require_once("/classes/Conexao.class.php"); //Incluimos o arquivo de conexão.
require_once("classes/entidade/Usuario.class.php");
require_once("classes/dao/UsuarioDAO.class.php");
class comentarioDAO {
function __construct() {
$this->con = new Conexao();
$this->pdo = $this->con->Connect();
}
public function cadatrarComentario(comentario $entComentario) {//Criamos um método que será responsável por gravar os comentários, como parâmetro ele recebe nossa entidade comentário.
try {
//$idUser = $this->obterIdUser($emailUser);
$stmt = $this->pdo->prepare("INSERT INTO comentario (comentario, data, hora, id_usuario)
VALUES ( :comentario, :data, :hora, :idUsuario)");
$param = array(
":comentario" => $entComentario->getComentario(),
":data" => date("Y/m/d"),
":hora" => date("h:i:s"),
":idUsuario" => $_SESSION['ID_USER']//chamando aqui o valor que armazenou
);
return $stmt->execute($param); // Aqui executamos nosso SQL e passamos os parâmetros, o reusltado é retornado no nosso método
} catch (PDOException $ex) { //Se houver algum erro no nosso código vamos criar uma exceção para informar onde esta o erro.
echo "ERRO: " + $ex->getMessage(); //Exibimos a mensagem de erro e pegamos o código do erro.
}
}
//Método de consulta
public function consultarComentario() {
try { //Executa nosso código
$stmt = $this->pdo->prepare("SELECT * FROM comentario INNER JOIN usuario ON (comentario.id_usuario = usuario.id_usuario)");
$stmt->execute();
return $stmt->fetchall(PDO::FETCH_ASSOC);
} catch (PDOException $ex) { //Se houver algum erro no nosso código vamos criar uma exceção para informar onde esta o erro.
echo "ERRO: " + $ex->getMessage(); //Exibimos a mensagem de erro e pegamos o código do erro.
}
}
}
?>