sábado, 4 de abril de 2015

Pagina de busca simples em PHP com PDO e MySQL usando um formulário



Hoje vamos ver como criar uma página de busca simples com PDO e MySQL. Esta página retornará os e-mails de amigos pesquisando-se parte do nome num campo de busca em um formulário; é bem simples. Vamos aos passos:

OBS: Este texto pressupõe que a extensão PDO já esteja instalada corretamente.

O primeiro passo é criar no banco de dados uma tabela bem simples, inicialmente apenas com os campos: id, nome e email, para facilitar. O código para criação dessa tabela segue abaixo (a tabela se chamará “amigos”, sem aspas):

CREATE TABLE `amigos` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `nome` varchar(50) NOT NULL default '',
  `email` varchar(50) default NULL,
   PRIMARY KEY  (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Insira alguns registros para teste. Ex;

Agora abra seu editor, crie uma nova página e digite (ou copie e cole) o seguinte código p/ criar a conexão ao MySQL:

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

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).

Agora insira as linhas abaixo para criar um formulário simples de pesquisa em HTML:

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

<body>

<h2>Pesquisa simples com PDO
</h2>
<p>

<form name="form1" method="post" action="">
  <label>
  <input name="cxnome" type="text" id="cxnome" value="" size="30">
  </label>
  <label></label>
 
  <label>
  &nbsp;&nbsp;
  <input type="submit" name="pesquisar" value="Pesquisar">
  </label>
&nbsp;
<label>
<input type="reset" name="Submit2" value="Limpar">
</label>
</form>


Agora vamos inserir o código PHP-PDO. Veja que a pesquisa só retorna resultados se o campo de busca não estiver em branco (linha 4)e incluímos um total de registros encontrados (linhas 9 a 11):

1.    <?php

2.    $nome=$_POST["cxnome"];
3.    $pesquisa=$_POST['pesquisar'];

4.    if(isset($pesquisa)&&!empty($nome))
5.    {
6.    $stmt = $con->prepare("select * from amigos where nome like :letra");
7.    $stmt->bindValue(':letra', '%'.$nome.'%', PDO::PARAM_STR);
8.    $stmt->execute();
9.    $resultados = $stmt->rowCount();

10.if($resultados>=1){

11.echo "Resultado(s) encontrado(s): ".$resultados."<br /><br />";
12.while($reg = $stmt->fetch(PDO::FETCH_OBJ))
13.{
14.echo $reg->nome." - ";
15.echo $reg->email."<br />";
16.}
17.}
18.else
19.{
20.echo "Não existe usuario cadastrado";
21.}
22.}
23.else{
24.echo "Preencha o campo de pesquisa";
25.}
26.?>

Vamos fechar o código HTML aberto acima:

</body>
</html>

Teste a pg no navegador; dê um “trato” no visual e sua página de pesquisa com PDO está pronta: