Guestbook – Livro de Visitas – Script PHP Simples

6 Comentários 20 abril 2010

 

Muitas pessoas me peguntam como se faz ou pedem ajuda para construir guestbooks, livros de visita e mural de recados (que são basicamente a mesma coisa) com PHP e MySql. Geralmente é difícil parar tudo que estou fazendo para ajudar alguém com conhecimentos bem básicos a construir um script desses.

As pessoas acham que um guestbook é algo simples, mas pode se tornar bastante complexo se forem levadas em conta características de segurança e validação de dados. Sendo assim, o script que apresento a seguir não segue premissas de segurança. Serve apenas para estudo, uma vez que é extremamente rasteiro o código utilizado. Portanto, não utilize este script em seu site aberto ao público. Ou use por sua conta e risco.

O sistema é composto por 3 arquivos:

 

1. guestbook.php
2. addguestbook.php
3. viewguestbook.php

E você seguirá 4 passos básicos para completar o trabalho:

1. Criar uma tabela chamada “guestbook” no banco da dados “teste“.
2. Criar o arquivo guestbook.php.
3. Criar o arquivo addguestbook.php.
4. Criar o arquivo viewguestbook.php.

1 – Criando a tabela na base de dados

CREATE TABLE `guestbook` (`id` int(4) NOT NULL auto_increment,`nome` varchar(65) NOT NULL default '',`email` varchar(65) NOT NULL default '',`comentario` longtext NOT NULL,`datetime` varchar(65) NOT NULL default '',PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Sua base de dados deve ficar assim:

Tabela Guestbook

Tabela Guestbook

2 – Criando o arquivo guestbook.php

<table width="400" border="0" align="center" cellpadding="3" cellspacing="0">
<tr>
<td><strong>Guestbook Teste</strong></td>
</tr>
</table>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form id="form1" name="form1" method="post" action="addguestbook.php">
<td>
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td width="117">Nome</td>
<td width="14">:</td>
<td width="357"><input name="nome" type="text" id="nome" size="40" /></td>
</tr>
<tr>
<td>Email</td>
<td>:</td>
<td><input name="email" type="text" id="email" size="40" /></td>
</tr>
<tr>
<td valign="top">Comentario</td>
<td valign="top">:</td>
<td><textarea name="comentario" cols="40" rows="3" id="comentario"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Enviar" /> <input type="reset" name="Submit2" value="Reset" /></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
<table width="400" border="0" align="center" cellpadding="3" cellspacing="0">
<tr>
<td><strong><a href="viewguestbook.php">Ver Guestbook</a> </strong></td>
</tr>
</table>

3 – Criando o arquivo addguestbook.php

<?php
$host="localhost"; // Servidor
$username=""; // Usuario do Mysql
$password=""; // Senha do Mysql
$db_name="test"; // Nome do banco de dados
$tbl_name="guestbook"; // Nome da tabela
//Conecte ao servidor e selecione a base de dados.
mysql_connect("$host", "$username", "$password")or die("cannot connect server");
mysql_select_db("$db_name")or die("cannot select DB");
$datetime=date("y-m-d h:i:s"); //date time
$sql="INSERT INTO $tbl_name(nome, email, comentario, datetime)VALUES('$nome', '$email', '$comentario', '$datetime')";
$result=mysql_query($sql);
//checar se a query teve sucesso
if($result){
echo "Sucesso";
echo "<BR>";
echo "<a href='viewguestbook.php'>Ver guestbook</a>"; // link para ver o guestbook
}
else {
echo "ERRO";
}
mysql_close();
?>

4 – Criando o arquivo viewguestbook.php

<table width="400" border="0" align="center" cellpadding="3" cellspacing="0">
<tr>
<td><strong>Ver Guestbook | <a href="guestbook.php">Assinar Guestbook</a> </strong></td>
</tr>
</table>
<br>
<?php
$host="localhost"; // Servidor
$username=""; // Usuario do Mysql
$password=""; // Senha do Mysql
$db_name="test"; // Nome do banco de dados
$tbl_name="guestbook"; // Nome da tabela
// Conecte ao servidor e selecione a base de dados.
mysql_connect("$host", "$username", "$password")or die("cannot connect server ");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);
while($rows=mysql_fetch_array($result)){
?>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td><table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td>ID</td>
<td>:</td>
<td><? echo $rows['id']; ?></td>
</tr>
<tr>
<td width="117">Nome</td>
<td width="14">:</td>
<td width="357"><? echo $rows['nome']; ?></td>
</tr>
<tr>
<td>Email</td>
<td>:</td>
<td><? echo $rows['email']; ?></td>
</tr>
<tr>
<td valign="top">Comentario</td>
<td valign="top">:</td>
<td><? echo $rows['comentario']; ?></td>
</tr>
<tr>
<td valign="top">Date/Time </td>
<td valign="top">:</td>
<td><? echo $rows['datetime']; ?></td>
</tr>
</table></td>
</tr>
</table>
<BR>
<?
}
mysql_close(); //fechar base de dados
?>

Espero realmente ter ajudado a todos que buscam o conhecimento no PHP e, bons estudos!

Me siga no Twitter para ficar por dentro das novidades do blog.

Leia Também

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , ,

- escreveu 359 artigos em Brasil PHP.

Sou administrador de empresas, programador PHP, desenvolvedor web, marketeiro digital e me considero um problogger. Sou o editor do Brasil PHP e meu principal objetivo é levar conteúdos únicos e altamente relevantes para os leitores do blog. Aqui são abordados assuntos como criação de sites, monetização, programação PHP, SEO, Guias Comerciais, Classificados etc.

Entre em contato com o autor

Seus Comentários

6 Comentários até agora

  1. Flavio disse:
    Olá,

    HELLSTON LINHARES,

    estou estudando PHP, e analisando o seu código e o estudando, ao implementa-lo, consigo realizar as inserções de nome, e-mail e comentário (e visualiza-las no banco) meu dúvida é na exibição dos comentários na pagina, o erro ocorre na ultima linha do arquivo

    Parse error: syntax error, unexpected $end in C:..\guestbook\VIEWGUESTBOOk.php

    desde já grato.

    Flávio Oliveira

    Legal ou Bobagem: Positivo 1 Negativo 0

    • Flávio, obrigado pelo comentário. O seu problema é que alguma } não está fechada corretamente.

      No PHP, como em outras linguagens, toda função deve ser fechada.

      Por exemplo:

      <?php
      if (alguma coisa acontece) {
      faz isso
      }else{
      faz aquilo outro
      }//se essa chave não estiver no lugar vai aparece um erro desses
      ?>

      A solução aí é procurar onde não está fechando.

      Legal ou Bobagem: Positivo 0 Negativo 0

  2. mari disse:
    Grata

    Consegui entender o db, agora problema esta no seguinte:
    quando preencho todos os campos, na hora de enviar aparece assim:

    ERRO

    nao sei agora o que pode ser isso, pois DB ja esta certinho

    Legal ou Bobagem: Positivo 0 Negativo 0

    • Esse “erro” que está aparecendo é porque você não está conseguindo inserir as informações corretamente no banco de dados. Já está conectando tudo certo.

      Mas acho que sei qual é o problema…

      Está na linha 11 do arquivo addguestbook.php

      $sql="INSERT INTO $tbl_name(nome, email, comentario, datetime)VALUES('$nome', '$email', '$comentario', '$datetime')";
      

      Porque ela deve ser escrita da seguinte forma:

      $sql="INSERT INTO $tbl_name(nome, email, comentario, datetime)VALUES('$_POST[nome]', '$_POST[email]', '$_POST[comentario]', '$datetime')";
      

      Talvez tenha sido uma falha minha achar que pessoas sem experiência conseguiriam entender essa parte.

      Espero que agora dê tudo certo.

      Legal ou Bobagem: Positivo 1 Negativo 0

  3. mari disse:
    Ola,

    Estou usando seu codigo para Guestbook, mas nao estou conseguindo enviar mensagem teste, quando clico em enviar aparece seguinte mensagem:
    Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘sedaflor_mari212′@’localhost’ (using password: YES) in /home/sedaflor/public_html/addguestbook.php on line 8
    cannot connect server

    Nao entendo muito de codigos, tudo que fiz, foi atraves de tutoriais e livros

    Fico grata se puder me ajudar

    Legal ou Bobagem: Positivo 0 Negativo 0

    • O erro está no nome do usuário do banco de dados, porque o usuário sedaflor_mari212 não existe. Você tem que ver como o seu Cpanel gera os nomes de usuários para os bancos de dados.

      Se precisar de ajuda, pode comentar aqui que eu respondo.

      Legal ou Bobagem: Positivo 1 Negativo 0





Comentadores

© 2009/2012 Brasil PHP - Feito com Wordpress - Política de Privacidade -

Tema por Woo Themes