sábado, 14 de julho de 2012

Sistema simples de Comentários PHP - MySQL

Dessa vez vamos aprender a criar um sistema de comentários em PHP. Vou usar o seguinte critério, coloco o código e logo em seguida o explico.
 Então mãos a obra:

Primeiro passo é criar o nosso Banco de Dados

CREATE DATABASE bdcomentarios
Cria o banco bdcomentarios.

Após criado o banco, vamos criar a tabela. 

A tabela conterá as coluna 'id', 'nome', 'email', 'data' e 'comentário'.

CREATE TABLE `tbcomentarios` ( 
'id' INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
'nome' VARCHAR( 30 ) NOT NULL ,
'email' VARCHAR( 30 ) NOT NULL ,
'data' DATE NOT NULL ,
'comentario' VARCHAR( 255 ) NOT NULL 
) ;
  • CREATE TABLE 'tbcomentarios'
  • Cria a tabela tbcomentarios
  • 'id' INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY
  • Cria uma coluna chamada 'id' do tipo inteiro de tamanho 5
  • PRIMARY KEY
  • Determina que o atributo 'id' será chave primária
  • AUTO_INCREMENT
  • Significa que a cada novo registro inserido, o valor do atributo 'id' será acrescido de 1 unidade automaticamente.
  • 'nome' VARCHAR(30) NOT NULL,
  • 'email' VARCHAR(30) NOT NULL,
  • 'comentario' VARCHAR(255) NOT NULL
  • Criar os atributos nome, email e comentario, do tipo varchar e com tamanhos de 30,30,255 respectivamente.
  • 'data' DATE NOT NULL
  • Cria na tabela o atributo data do tipo DATE. Obs: não necessita definir o tamanho. No MySQL o formato padrão da data é ano/mês/dia, por ex: 2010/06/17.
Criado o nosso banco de dados 'bdcomentarios', e a tabela 'tbcomentarios' vamos para o PHP. Crie um novo arquivo php com o nome formulário.php A primeira coisa após criado o arquivo é colocar as tags HTML
<HTML>
<HEAD>
<TITLE>Sistemas de Comentários</TITLE>
</HEAD>
<BODY>
<h2>Comentários Enviados pelos Usuários</h3>
Não vou detalhar pois o nosso foco é o php e não o HTML. Depois disso vamos, conectar ao banco de dados através do php:
<?php
$conexao = mysql_connect("localhost",'root','');
$bd = mysql_select_db("bdcomentarios");
?>
  • "localhost"
  • Endereço do servidor onde executa os scripts php, nesse caso coloquei localhost, por está rodando em meu computador;
  • 'root'
  • Nome de usuário do banco de dados
  • ' '
  • Destinado a senha, nesse caso não tem senha, portanto o deixei vazio.
  • mysql_select_db("bdcomentarios")
  • Responsavel por selecionar o banco de dados a ser usado, no nosso caso o banco criado foi bdcomentarios.
Até agora o nosso código está assim:
<HTML>
<HEAD>
 <TITLE>Comentários</TITLE>
</HEAD>
<BODY>
<h2>Comentários Enviados pelos Usuários</h3>
<?php
$link=mysql_connect("localhost","root","");
$banco=mysql_select_db("bdcomentarios");
?>
Agora vamos criar o formulário a ser usado, para isso acrescente o seguinte código:
<form name="form" method="post" action="#">
Nome:
<input type=text name=nome>
<br><br>
E-Mail:
<input type=text name=email>
<br><br>
Mensagem:
<br><textarea name=comentario></textarea>
<br><br>
<input type=submit value=Enviar>
<input type=reset value=Limpar>
</form>
<hr>
Como já disse antes, o objetivo é o PHP e não o HTML, portanto só vou explicar o seguinte trecho de código: action="#" - significa que ao clicar no botão "enviar" os dados serão enviados para o próprio arquivo formulario.php e processados. Agora vamos para o código php responsável pela inserção dos dados no banco e exibição dos mesmos:
<?php
$nome=$_POST['nome'];
$email=$_POST['email'];
$data = date("Y/m/d");           
$comentario=$_POST['comentario'];
?>
Esse código faz com que as variáveis $nome, $email, $data e $comentario recebam os valores que foram digitados nos campo do formulário. $nome= $_POST['nome']; A variavel $nome recebe o valor digitado no campo do formulário que possue o name = 'nome' $data = date("Y/m/d"); A variável $data é diferente por se tratar de manipulacao de data, portanto, "date(Y/m/d)" siginifica que a variável $data vão receber a data do envio do formulário no formato ano,mês,dia(Y/m/d). if(strlen($_POST['nome'])) #insere somente se no form foi escrito o nome Agora vamos inserir os dados no banco de dados:
$insert = mysql_query("INSERT INTO tbcomentarios(nome,email,data,comentario) 
values('$nome','$email','$data','$comentario')");
As colunas nome,email,data e comentario da tabela tbcomentários vão receber o valor contido nas variáveis '$nome','$email','$data' e '$comentario' respectivamente. Agora vamos fazer a consulta no banco de dados e exibi-las:
$sql = "SELECT * FROM tbcomentarios ORDER BY id desc";
O código acima seleciona todos os comentários postados e os exibe em ordem decrescente de acordo com o id. O comando "order by id" significar ordenar por 'id' e o comando "DESC" ordenar em ordem decrescente. Isso faz com que os comentários sejam exibidos do último postado até o primeiro.
$executar = mysql_query($sql);
O comando mysql_query() é responsável por enviar uma consulta MySQL; E para listar todos os comentários vamos fazer um while para exibir todos os dados:
while( $exibir = mysql_fetch_array($executar)){
echo $exibir['data'];
echo "</br>";
echo $exibir['nome'];
echo "</br>";
echo $exibir['email'];
echo "</br>";
echo $exibir['comentario'];
echo "</br><hr>";
}
?>
$exibir = mysql_fetch_array($executar) Esse comando retorna uma matriz que corresponde a linha obtida na consulta. A variável $exibir é responsável por receber os dados dessa matriz. Por fim, os comando echo $exibir['data']; echo $exibir['nome'] ... vão exibir os dados retornados da consulta.

Abaixo listo o código final:

Criação do banco e da tabela:

CREATE DATABASE bdcomentarios

CREATE TABLE `tbcomentarios` ( 
'id' INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
'nome' VARCHAR( 30 ) NOT NULL ,
'email' VARCHAR( 30 ) NOT NULL ,
'data' DATE NOT NULL ,
'comentario' VARCHAR( 255 ) NOT NULL 
) ;

Arquivo formulário.php
<HTML>
<HEAD>
<TITLE>Comentários</TITLE>
</HEAD>
<BODY>
<h2>Comentários Enviados pelos Usuários</h3>
<?php
$link=mysql_connect("localhost",'root','');
$banco=mysql_select_db("bdcomentarios");
?>

<form name="form" method="post" action="#">
    Nome:
    <input type=text name=nome>
    <br><br>E-Mail:
    <input type=text name=email>
    <br><br>Mensagem:<br>
    <textarea name=comentario></textarea>
    <br><br>
    <input type=submit value=Enviar>
    <input type=reset value=Limpar>
</form>
<hr>

<?php

$nome=$_POST['nome'];
$email=$_POST['email'];
$data = date("Y/m/d");           
$comentario=$_POST['comentario']; 
if(strlen($_POST['nome'])) #insere somente se no form foi escrito o nome
{
    $insert = mysql_query("INSERT INTO tbcomentarios(nome,email,data,comentario) 
    values('$nome','$email','$data','$comentario')");
}
$sql = "SELECT * FROM tbcomentarios ORDER BY id desc";
$executar=mysql_query($sql);
while( $exibir = mysql_fetch_array($executar)){
    echo $exibir['data'];
    echo "</br>";
    echo $exibir['nome'];
    echo "</br>";
    echo $exibir['email'];
    echo "</br>";
    echo $exibir['comentario'];
    echo "</br><hr>";
}
?>
</BODY>
</HTML>


Um comentário: