<?php
if(isset($_POST['cadastrar']) && $_POST['cadastrar'] == 'ok'){
$post_status = 'aguardando';
$post_data = date('Y-m-d H:i:s');
$autor = strip_tags(trim($_POST['nome']));
$email = strip_tags(trim($_POST['email']));
$site = strip_tags(trim($_POST['site']));
$comentario = strip_tags(trim($_POST['comentario']));
if(empty($autor)){
$retorno = "Informe seu nome";
}elseif(empty($email)){
$retorno = "Informe seu e-mail";
}/*elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$retorno = "Informe um e-mail válido";
}*/elseif(empty($comentario)){
$retorno = "Informe seu comentario";
}if(empty($retorno)){
$cadastrar_comentario = mysql_query("INSERT INTO c_comments (id, post_status, data, autor, email, site, comentario) VALUES ('$recupera', '$post_status', '$post_data', '$autor', '$email ', '$site', '$comentario')") or die (mysql_query());
if($cadastrar_comentario >= '1'){
$retorno = "Recebemos seu comentário e ele será publicado assim que for aprovado por nossa equipe. Obrigado!";
unset($form_autor, $form_email, $form_site, $form_comentario);
}else{
$retorno = "Erro ao cadastrar seu comentário, tente novamente!";
}
}
}
?>
<?php
$form_autor = $_POST['nome'];
$form_email = $_POST['email'];
$form_site = $_POST['site'];
$form_comentario = $_POST['comentario'];
?>
<ul>
<?php
$id_do_post = $_GET['topico'];
$comentarios = mysql_query("SELECT id,
post_status,
data,
autor,
email,
site,
comentario
FROM c_comments
WHERE id = '$recupera' AND post_status = 'aprovado'
ORDER BY data DESC")
or die (mysql_error());
if(@mysql_num_rows($comentarios) == '0'){
echo "não existem comentários neste topico, seja o primeiro!";
}else{
while($res_comments=mysql_fetch_array($comentarios)){
$post_id = $res_comments[0];
$post_status = $res_comments[1];
$data = $res_comments[2];
$autor = $res_comments[3];
$email = $res_comments[4];
$site = $res_comments[5];
$comentario = $res_comments[6];
$default = "http://0.gravatar.com/avatar/6a74d27730409454cee4eac1af23234c?s=40&d=&r=G";
$size = 40;
$grav_url = "http://www.gravatar.com/avatar/" . md5( strtolower( trim( $email ) ) ) . "?d=" . urlencode( $default ) . "&s=" . $size;
?>
<li>
<h2><img src="<?php echo $grav_url; ?>" alt="" /> <?php echo $autor; ?> Disse em: <?php echo date('d/m/Y H:m', strtotime($data));?></h2>
<p><?php echo $comentario; ?></p>
</li>
<?php
}
}
?>
</ul>
<div id="comentar">
<h2><?php if(isset($retorno)){
echo "$retorno";
}
?></h2>
<form method="post" action="" name="comentar" enctype="multipart/form-data">
<fieldset>
<legend>Deixe seu comentário</legend>
<label> <span>Nome</span>
<input type="text" name="nome" value="<?php echo $form_autor; ?>"/>
</label>
<label> <span>E-mail</span>
<input type="text" name="email" value="<?php echo $form_email; ?>"/>
</label>
<label> <span>Site</span>
<input type="text" name="site" value="<?php echo $form_site; ?>"/>
</label>
<label> <span>Comentário</span>
<textarea name="comentario" rows="5"><?php echo $form_comentario; ?></textarea>
</label>
<input type="hidden" name="cadastrar" value="ok"/>
<input type="submit" value="Enviar Comentário" class="btn"/>
</fieldset>
</form>
</div><!--comentar-->
comentario duplicado no banco de dados ao atualizar página
Criado por radicalroller2, Dec 01 2011 05:03 PM
comentario duplicado banco de dados
4 respostas neste tópico
#1
Postado 01 December 2011 - 05:03 PM
Sou novo no php e estou tento um probleminha, fiz um sistema de comentários que assisti em um tutorial com um painel administrativo, o formulário para comentar junto com o código fica em uma página dinâmica chamada single.php, ao se comentar, e clicar em enviar o comentário aparece normalmente no Painel administrativo como aguardando, porém se o usuário atualizar a página, sem comentar, o comentário que ele fez anteriormente é enviado novamente para o Painel Administrativo = Banco de dados. Não consegui arrumar esse problema alguém pode me dar uma luz?
#2
Postado 11 December 2011 - 07:26 AM
o mais ideal seria vc separar o seu formulário em uma página e o algoritmo que grava em outra, claro teria que alterar algumas coisas neste se código, faça um formulário com POST ficará melhor tanto para vc aprender a separar o código e receber em outra página e tbm quanto a organização do seu código.
bom já que não tenho nada para fazer dê uma olhada aí no num pequeno exemplo que irei fazer:
Pagina formulario.html
então explicando
$conn = mysql_connect("localhost","root","");
$db = mysql_select_db("nomedobancocriado", $conn);
conexão basica para o banco de dados
$nome = $_POST['nome']
$msg = $_POST['msg']
Aqui vc está recebendo do seu formulário as variaveis, se notar no seu formulario no campo nome esta atribuido nome como name e mensagem com msg entao dentro destas variaveis acima colocamos os valores nome e msg.
f($nome != "" && $msg !=""){
Aki diz que se nome não conter nada e se msg nao conter nada passa para o proximo passo.
$sql = mysql_query("INSERT INTO nomedatabela (id, camponome, campomensagem) VALUES ('','$nome','$msg')");
aqui criamos a query que ira gravar no banco
if($sql){
header('Location: formulario.html');
}
este trecho diz que se a query criada acima gravou então ele retorna ao formulario conforme colocado dentro do header
else{
echo "erro ao cadastrar";
}
senão se nao gravou ele da o erro na tela dizendo que não cadastrou.
É claro é um exemplo muito simples mas que tbm não posso te dar mastigado vc tem que ler isso e tentar melhorar fazer da sua forma para que vc realmente possa aprender.
Ah não esqueça de criar a tabela no banco de dados da seguinte forma
create table comentarios(
id int not nul auto_increment primary key,
nome varchar(45),
msg text);
bom no mais é isso qualquer duvida poste alguma coisa ai.
I HOPE THAT HELPS!
bom já que não tenho nada para fazer dê uma olhada aí no num pequeno exemplo que irei fazer:
Pagina formulario.html
Quote
<form action="gravar.php" method="post"/>
Nome: <br />
<input type="text" name="nome" /> <br />
Mensagem: <br />
<input type="text" name="msg" /> <br />
<input type="submit" value="comentar" /> <br />
</form>
Página gravar.php
<?php
$conn = mysql_connect("localhost","root","");
$db = mysql_select_db("nomedobancocriado", $conn);
$nome = $_POST['nome']; // recebo da pagina formulario nome
$msg = $_POST['msg']; // recebe da pagina formulario mensagem
if($nome != "" && $msg !=""){
$sql = mysql_query("INSERT INTO comentarios (id, nome, mensagem) VALUES ('','$nome','$msg')");
if($sql){
header('Location: formulario.html');
}else{
echo "erro ao cadastrar";
}
}
?>
Nome: <br />
<input type="text" name="nome" /> <br />
Mensagem: <br />
<input type="text" name="msg" /> <br />
<input type="submit" value="comentar" /> <br />
</form>
Página gravar.php
<?php
$conn = mysql_connect("localhost","root","");
$db = mysql_select_db("nomedobancocriado", $conn);
$nome = $_POST['nome']; // recebo da pagina formulario nome
$msg = $_POST['msg']; // recebe da pagina formulario mensagem
if($nome != "" && $msg !=""){
$sql = mysql_query("INSERT INTO comentarios (id, nome, mensagem) VALUES ('','$nome','$msg')");
if($sql){
header('Location: formulario.html');
}else{
echo "erro ao cadastrar";
}
}
?>
então explicando
$conn = mysql_connect("localhost","root","");
$db = mysql_select_db("nomedobancocriado", $conn);
conexão basica para o banco de dados
$nome = $_POST['nome']
$msg = $_POST['msg']
Aqui vc está recebendo do seu formulário as variaveis, se notar no seu formulario no campo nome esta atribuido nome como name e mensagem com msg entao dentro destas variaveis acima colocamos os valores nome e msg.
f($nome != "" && $msg !=""){
Aki diz que se nome não conter nada e se msg nao conter nada passa para o proximo passo.
$sql = mysql_query("INSERT INTO nomedatabela (id, camponome, campomensagem) VALUES ('','$nome','$msg')");
aqui criamos a query que ira gravar no banco
if($sql){
header('Location: formulario.html');
}
este trecho diz que se a query criada acima gravou então ele retorna ao formulario conforme colocado dentro do header
else{
echo "erro ao cadastrar";
}
senão se nao gravou ele da o erro na tela dizendo que não cadastrou.
É claro é um exemplo muito simples mas que tbm não posso te dar mastigado vc tem que ler isso e tentar melhorar fazer da sua forma para que vc realmente possa aprender.
Ah não esqueça de criar a tabela no banco de dados da seguinte forma
create table comentarios(
id int not nul auto_increment primary key,
nome varchar(45),
msg text);
bom no mais é isso qualquer duvida poste alguma coisa ai.
I HOPE THAT HELPS!
"Sem o C nós só teríamos Pasal, Obol e BASI."
#3
Postado 11 December 2011 - 07:29 AM
Formulario.html
<form action="gravar.php" method="post"/>
Nome: <br />
<input type="text" name="nome" /> <br />
Mensagem: <br />
<input type="text" name="msg" /> <br />
<input type="submit" value="comentar" /> <br />
</form>
Página gravar.php
<?php
$conn = mysql_connect("localhost","root","");
$db = mysql_select_db("nomedobancocriado", $conn);
$nome = $_POST["]; // recebo da pagina formulario nome
$msg = $_POST['msg']; // recebe da pagina formulario mensagem
if($nome != "" && $msg !=""){
$sql = mysql_query("INSERT INTO comentarios (id, nome, mensagem) VALUES ('','$nome','$msg')");
if($sql){
header('Location: formulario.html');
}else{
echo "erro ao cadastrar";
}
}
?>
coloquei novamente o código melhor escrito
"Sem o C nós só teríamos Pasal, Obol e BASI."
#4
Postado 19 December 2011 - 11:47 AM
O ideal seria vc confgurar o banco de dados para nao receber valores duplicatas em um determinado campo, ou então le sobre o token no google é uma tecnica qeu evita isso
#5
Postado 16 January 2012 - 07:02 AM
Bom dia,
Estarei ministrando um curso de PHP ORIENTADO A OBJETOS pelo site http://stoodos.com.b...ulate/course/99 o curso custa R$ 30,00 realmente é muito barato, entre lá e confirme sua presença para fevereiro, já estamos na segunda turma e realmente o aproveitamento está sendo muito bom. No curso ensino desde o php para iniciantes até o php orientado a objetos.
Abaixo um pouco sobre o que você aprenderá neste curso.
1 - Introdução ao PHP
1.1 História do PHP
1.2 O PHP e a sua área de aplicação
2 - Ambiente
1.1 Escolhendo as ferramentas para trabalhar
1.2 Preparando o ambiente
1.3 Testando o ambiente
3 - Aprendendo PHP do básico ao avançado
1.1 Delimitadores
1.2 Variáveis
1.3 Constantes
1.4 Variáveis globais
1.5 Operadores aritméticos
1.6 Operadores de comparação
1.7 Operadores lógicos
1.8 Estruturas de controle (if, swicht)
1.9 Laços de repetição (for, foreach, while, do while)
1.10 Resources para banco de dados
1.11 Functions
1.12 Algumas funções pré-definidas do php
4 - Aprendendo PHP Orientado a Objetos
1.1 Conceito de Orientação a Objetos
1.2 Conceito de classes e objetos
1.3 Criando a primeira classe
1.4 Métodos e Propriedades
1.5 Herança
1.6 Polimorfismo
1.7 Abstração
1.8 Modificadores de acesso
1.9 Palavra reservada self::
1.10 Constantes no PHP OO
1.11 Classe abstrata
1.12 Classe final
1.12 Método abstrato
1.13 Método final
1.14 Manipulação de métodos e classes
1.15 Associação e Agregação
1.16 Acesse banco de dados com PDO
1.17 Projeto final do curso
************************************************************
A cada aula que for realizada o aluno irá receber o material de estudo onde conterá, o material apresentado na aula sendo eles:
1 - Slides do curso com a matéria aprendida.
2 - Fontes do curso, exemplos de como funciona o que aprendeu.
3 - IDE de desenvolvimento.
4 - Ajuda na instalação do ambiente.
Estarei ministrando um curso de PHP ORIENTADO A OBJETOS pelo site http://stoodos.com.b...ulate/course/99 o curso custa R$ 30,00 realmente é muito barato, entre lá e confirme sua presença para fevereiro, já estamos na segunda turma e realmente o aproveitamento está sendo muito bom. No curso ensino desde o php para iniciantes até o php orientado a objetos.
Abaixo um pouco sobre o que você aprenderá neste curso.
1 - Introdução ao PHP
1.1 História do PHP
1.2 O PHP e a sua área de aplicação
2 - Ambiente
1.1 Escolhendo as ferramentas para trabalhar
1.2 Preparando o ambiente
1.3 Testando o ambiente
3 - Aprendendo PHP do básico ao avançado
1.1 Delimitadores
1.2 Variáveis
1.3 Constantes
1.4 Variáveis globais
1.5 Operadores aritméticos
1.6 Operadores de comparação
1.7 Operadores lógicos
1.8 Estruturas de controle (if, swicht)
1.9 Laços de repetição (for, foreach, while, do while)
1.10 Resources para banco de dados
1.11 Functions
1.12 Algumas funções pré-definidas do php
4 - Aprendendo PHP Orientado a Objetos
1.1 Conceito de Orientação a Objetos
1.2 Conceito de classes e objetos
1.3 Criando a primeira classe
1.4 Métodos e Propriedades
1.5 Herança
1.6 Polimorfismo
1.7 Abstração
1.8 Modificadores de acesso
1.9 Palavra reservada self::
1.10 Constantes no PHP OO
1.11 Classe abstrata
1.12 Classe final
1.12 Método abstrato
1.13 Método final
1.14 Manipulação de métodos e classes
1.15 Associação e Agregação
1.16 Acesse banco de dados com PDO
1.17 Projeto final do curso
************************************************************
A cada aula que for realizada o aluno irá receber o material de estudo onde conterá, o material apresentado na aula sendo eles:
1 - Slides do curso com a matéria aprendida.
2 - Fontes do curso, exemplos de como funciona o que aprendeu.
3 - IDE de desenvolvimento.
4 - Ajuda na instalação do ambiente.
"Sem o C nós só teríamos Pasal, Obol e BASI."
1 usuário(s) está(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)











