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
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> </td> <td> </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.


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
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.
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
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.
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
Se precisar de ajuda, pode comentar aqui que eu respondo.