sábado, 4 de abril de 2015

Mural de recados em PHP com PDO e MySQL



Atualmente, com o sucesso das “redes sociais”, um mural de recados (ou livro de visitas) é o tipo de página que não pode faltar em seu site; vamos ver como criar um bem simples, utilizando a biblioteca PDO.


Requisitos importantes: Este tutorial pressupõe que estão instaladas corretamente as extensões ao MySQL e PDO; para verificar isso, use o comando phpinfo()

1.    O primeiro passo é criar no banco de dados uma tabela para armazenar as mensagens do mural, com os campos: id, nome, email, mensagem e data de criação do registro; o código para criação dessa tabela segue abaixo (a tabela se chamará tbmural):

CREATE TABLE `tbmural` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `nome` varchar(50) NOT NULL default '',
  `email` varchar(50) default '',
  `mensagem` varchar(500) default NULL,
  `dia` timestamp NULL default CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

2.     Insira alguns registros para teste.

3.     Agora abra seu editor, crie uma nova pagina e digite (ou copie e cole) o seguinte código para criar a conexão ao MySQL:

<?php
 try {
    $db = new PDO('mysql:host=XXX;dbname=XXX', 'root', 'XXX');
 } catch (PDOException  $e) {
    print $e->getMessage();
 }
?>

4. Substitua, acima, os triplos X (“XXX”), pelo caminho do banco de dados (se estiver em seu computador, normalmente é “localhost” sem aspas), nome do banco e senha (se for o caso, substitua também root pelo nome do usuário).

5.    Adicione as linhas abaixo para exibir a linha inicial do Mural em HTML:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>mural</title>
</head>
<body>

<p>Teste - Mural PDO com MYSQL -  c/ DATA EM PORTUGUES
<p>

6.    A seguir o código PHP para inserir novas mensagens e exibi-las:

<?php
$nome=$_POST['cxnome'];
$email=$_POST['cxemail'];
$mensagem=$_POST['cxmensagem'];
$envia=$_POST['btenvia'];

if(!empty($nome) && isset($envia)){
$insert=$db->prepare("insert into tbmural(nome,email, mensagem) values('$nome', '$email','$mensagem')");
$insert->execute();
header("Location: XXX.php");
}
$stmt = $db->prepare("select * from tbmural order by id desc");
$stmt->execute();
while($reg = $stmt->fetch(PDO::FETCH_OBJ))
{
echo $reg->id. " - ";
echo $reg->nome. " - ";
echo $reg->email. " - ";
echo $reg->mensagem. " - ";
echo date('d/m/Y', strtotime($reg->dia)). "<br />";
}
?>

Atenção: substitua, acima, o triplo X (“XXX”), pelo nome do seu arquivo
(linha: header("Location: XXX.php");

7.   Agora um formulário simples para inserção de novas mensagens:

</p>
<p>Insira sua mensagem:</p>
<form name="form1" method="post" action="">
  <label>
  Nome*:
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  <input name="cxnome" type="text" id="cxnome">
  </label>
  <br>
  <label>E-mail:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  <input name="cxemail" type="text" id="cxemail">
  </label>
  <br>
Mensagem:
&nbsp;
<label>
<textarea name="cxmensagem" cols="20" id="cxmensagem"></textarea>
</label>
<br>
<br>
<label>
<input name="btenvia" type="submit" id="btenvia" value="Enviar">
</label>
<br>
<br>
*Aten&ccedil;&atilde;o: preenchimento obrigat&oacute;rio
</form>
<p>&nbsp; </p>
</body>
</html>

8. Salve e teste a página no navegador. Agora é com você: dê um “trato” no visual e seu mural está pronto!