Usando classes em conexão e consultas à banco de dados em PHP

Neste meu primeiro artigo mostro como criar uma classe para se conectar e executar consultas a um banco de dados. Este modo de programar facilita nossa vida organizando nosso código em funções e classes.

[ Hits: 17.912 ]

Por: Perfil removido em 16/10/2003


Introdução



Opa!

Primeiramente meus agradecimentos aos meus colegas de correria: Clodonil Honório Trigo, Gaby Lima Dias e ao grande amigo e irmão Rodrigo Rodrigues =).

Bom vamos lá.

Pessoal, esses exemplos que estarei postando aqui foram tempos de trabalho em cima de projetos e necessidades que no decorrer do tempo foram criadas para melhor aproveitamento do código e rapidez na finalização de um sistema.

1a etapa


Vamos montar uma classe chamada querys:

class querys {
    var $ip = "localhost";
    var $user = "root";
    var $pass = "";
    var $database = "projeto";
}

Nessa classe montamos ela com 4 variáveis: $ip, $user, $pass e $database. Nelas estão armazenadas as configurações necessárias para acesso ao banco, isso é legal quando acontece de alguém querer configurar seu sistema, aí fica tudo bem à vista do cara, que não precisa ter medo de mexer nos códigos =).

Agora vamos montar algumas funções chamadas:
  • Selects()
  • AbreConexao()
  • FechaConexao()


// arquivo querys.php

class  querys {
    var $ip = "localhost";
    var $user = "root";
    var $pass = "";
    var $database = "projeto";
  
   function AbreConexao() {
      $this->conn = mysql_connect ($this->ip,$this->user,$this->pass); // aqui declaramos a var conn como variável da classe
      mysql_select_db ( $this->database, $this->conn);
      // esse "$this->" ele e utilizado para referenciar uma variável da classe
   }

  function FechaConexao() {
      mysql_close ($this->conn); // aqui fecho a conexão se baseando na variável acima declarada
  }
      
  function Selects($config) {
      $this->AbreConexao(); // Abrimos a conexão
      $conf = explode(",",$config)   // Aqui explodimos e jogamos em array

      if ($conf[0] == "select_login") {
          $select = mysql_query("SELECT * FROM users WHERE login LIKE '".$conf[1]."' AND pass LIKE '".$_POST[pass]."' ");
     /*
         perceba que aqui estou pegando a variável $conf[1] que será
         passada para a função contendo o login e para o password estou
         pegando a variável direto do form. Esses dois exemplos são bem
         legais.. aí você escolhe qual seguir, eu prefiro o esquema utilizado
         no password.
     */

          $result = mysql_num_rows($select);
     }

     if ($conf[0]=="select_permissao") {
        // aqui verifico permissão do usuário "administrador, usuário e etc"
        $select = mysql_query("SELECT * FROM users WHERE login LIKE '".$_POST[login]."' ");
        $coluna = mysql_fetch_array($select);
        $result = $coluna[permissao];
     }

     $this->FechaConexao(); // Fechamos a conexão
     return $result; // aqui fica o retorno de todas as condicionais
  }
}

Perceba que ao declarar a função, declaro uma variável chamada $config e depois explodo a mesma, ao invés de fazer $var1, $var2, $var3. E adivinha porque? Simples, isso foi feito porque você não fica preso a uma limitada quantidade de variáveis, sendo assim poderá passar quantas variáveis quiser =), para ajustar a função ao seu gosto e adicionar quando quiser.

Isso é legal quando você está montando um projeto muito grande, pode até chamar a mesma condicional umas 3 vezes. Se você for adicionar uma variável terá que alterar em todas? hehehe

Pronto, para finalizarmos montamos o seguinte:

// arquivo index.php
<?
include("querys.php");
$querys = new querys;

if ($_POST[acao_form] == "verificar_usuario") {
   if ($querys->Selects("select_login,$_POST[login]")) {
       if ($querys->Selects("select_permissao")=="administrador") {
           header("Location:admin.php");
        } else {
           header("Location:usuario.php");
       }
   } else  {
           echo "Você não está no banco";
   }
}
?>

<form>
   <input type="hidden" name="acao_form" value="verificar_usuario">
   <input type="text" name="login">
   <input type="submit" value="OPa!">
</form>

Beleza pessoal, esse primeiro artigo de muitos é para mostrar como podemos simplificar ao máximo nosso trabalho árduo =), esse ainda está bem simples, no próximo vamos começar a montar um sistema de login com permissão de usuários, restrições e etc. Esse artigo foi só para nos familiarizarmos =)

Então mande perguntas e me mandem também o que gostariam de estar vendo no próximo artigo... inté =)

Guilherme L. Stolfo
Smart Solutions e Tecnologia
www.smart-tec.com.br

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Kit de scripts para backup (Full + Diferencial + Samba + Rede)

A importância do modo texto

XL - Ferramenta de gerenciamento Xen - Parte II

Anthares, um sistema voltado para o usuário final

Pós-instalação do Solus OS para um desktop voltado ao usuário final

Leitura recomendada

Criando sites para celular com WML

BolachaMALPPH Apache X Lighttpd X PHP/FastCGI X APC X HTTPREF X MySQL

Compactador de URL utilizando manipulação de diretórios do Linux com PHP

PEAR - Utilizando classes prontas e documentadas no PHP

Guia completo do Ocomon no Linux - Módulo cliente, abertura de ocorrência (exclusivo VOL)

  
Comentários
[1] Comentário enviado por Ragen em 17/10/2003 - 20:38h

Bem, se o objetivo é só ensinar como usar classes para usar banco de dados tudo bem...

Mas o BobFrank escreveu um artigo muito bom disponivel em:
http://www.conflito.com.br/artigo_bf/index.php

Sobre o uso do P.E.T. Template e do ADODB (Front-End SQL) de forma a usar códigos "re-utilizaveis"

[]`s

Ragen

[2] Comentário enviado por jitto em 06/10/2004 - 08:29h

Puxa vida, eu queria muito aprender trabalhar com classes em PHP. Por enquanto só sei trabalhar no modo procedural!!!
- Alguém pode me indicar um livro ou um curso on-line de PHP avançado?
Da forma que o Guilherme mostrou aqui, para mim ainda ficou meio abstrato, preciso de mais detalhes a respeito.

[3] Comentário enviado por messala em 19/05/2005 - 11:57h

ow... muito bom essa sua aula! Mexo com php tem pouco mais de 1 ano e nunca tinha usado classes... soh com isso ae eu aprendi bastante. Sem dúvida vai me ajudar muito!

[4] Comentário enviado por messala em 19/05/2005 - 12:08h

eu fiz um baseado nesse seu modelo, soh que mais manuseável... onde eu posso postá-lo?

[5] Comentário enviado por removido em 19/05/2005 - 12:14h

OPa, pode postar aqui mesmo. Lembrando que esse exemplo que contribui aqui, além de ser bastante antigo, demonstra conceitos básicos de se utilizar classes em um sistema.

--
Abs,
guinet gmail com

[6] Comentário enviado por henbran em 27/02/2006 - 12:58h

Pessoal PHP
testei esse recurso, claro que sou iniciante em php, ocorre que na linha a seguir apresentou erro

$conf = explode(",",$config) // Aqui explodimos e jogamos em array

erro:
Parse error: syntax error, unexpected T_IF in /var/www/queryes.php on line 25

uso kurumin + apache 2 + php5 + mysql5

Por favor, ajudem-me a definir que erro é esse.

Até + e um grande abraço

[7] Comentário enviado por fernandoamador em 18/04/2006 - 18:59h

Vlw...gostei do artigo...ate +

[8] Comentário enviado por claudiolima em 31/05/2006 - 11:36h

Um artigo Sinples, mas que mostra bem como usar Classes em PHP.
Muito bom.

[9] Comentário enviado por salvini em 02/03/2007 - 11:48h

$conf = explode(",",$config); // Aqui explodimos e jogamos em array

Faltou o ponto e virgula depois do $config)
Acho que é isso.

[10] Comentário enviado por denes em 24/05/2007 - 16:27h

Oi, Guilherme!
Parabéns pelo artigo. Sou iniciante em PHP, mas já fiz curso de programação Delphi, onde tive contado com POO e sou completamente pró-POO. E o uso de classes é extremamente importante nesse modelo de programação. Espero ver mais artigos assim!
Abçs.

[11] Comentário enviado por xploitx em 20/05/2009 - 10:19h

muito bom o artigo.
está começando a clarear minhas idéias relacionadas a PHP OOP


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts