Classe para uso com o mysql

Publicado por Vinicus S Moraes 05/07/2008

[ Hits: 6.606 ]

Homepage: http://vsmoraes.wordpress.com

Download mysqlClass.php




Criei esta classe de conexão com o banco mySQL para facilitar o trabalho em alguns sites que estou fazendo e decidir compartilhar.

É bem simples e está 90% comentada.

Possui métodos para paginação e etc...

  



Esconder código-fonte

<!-- Vou implementar aqui algumas classes em CSS para ficar mais fácil de tratar a aparência das mensagens -->

<style type="text/css">
p { margin:3px; }
table {border-collapse:collapse;}
.tdTitle {
  border:1px solid #000000;
  background-color:#CCCCCC;
  color:#000000;
  font-family: Verdana, Arial, Helvetica, sans-serif;
  height:30px;
  font-size: 12px;
  font-weight: bold;
}
.botaoPagina {
  border:1px solid #CCCCCC;
  background-color:#EEEEEE;
  margin:1px;
  text-align: center;
  padding: 3px 5px 3px 5px;
  color:#000000;
  font-family: Verdana, Arial, Helvetica, sans-serif;
  font-size: 10px;
  text-decoration: none;
}
.botaoPaginaAtivo {
  border:1px solid #CCCCCC;
  background-color:#99CCFF;
  margin:1px;
  text-align: center;
  padding: 3px 5px 3px 5px;
  color:#000000;
  font-family: Verdana, Arial, Helvetica, sans-serif;
  font-size: 10px;
  text-decoration: none;
}
.botaoPagina:hover {
  background-color: #99CCFF;
}
.td1 {border:1px solid #000000; background-color:#FFFFDF; color:#000000; font-family: Verdana, Arial, Helvetica, sans-serif;  font-size: 10px;}
.td2 {border:1px solid #000000; background-color:#FFFFFF; color:#000000; font-family: Verdana, Arial, Helvetica, sans-serif;  font-size: 10px;}
</style>

<!-- Fim -->

<?
/* #############################################
   # Classe para trabalhar com banco de dados  #
   # mySQL -- Modificação da classe SqlServer  #
   #Testado em um Servidor com:                #
   #    Apache 1.3                             #
   #    PHP 5                                  #
   #    SQL Server 2000                        #
   #    Internet Explorer 6+                   #
   #    Mozila FireFox                         #
   #                                           #
   #Autor: Vinicius S. Moraes                  #
   #       vsmoraes <vinicius@vsmora.com>      #
   #############################################
*/

class sqlControl {
  // Altere as variáveis abaixo de acordo com seu servidor SQL para a conexão:
    var $HOST = "localhost"; // Host/IP do servidor SQL Server.
    var $USER = "root"; // Usuário vinculado ao SQL.
    var $PASS = "123"; // Senha do usuário.
    var $DB = "mysql"; // Especifique o nome do banco de dados.
    var $QUERY = "";
    var $RESULTADO = "";
    var $ERROS = ""; // Variável que irá armazenar mensagens de erros, se houver.
    var $CONECTADO = 0;
    var $PAGINAS = 0;

  function sqlControl() { // Método Contrutor - Chamado no momento que da declaração de um objeto dessa classe.
    $this->connect(); // Tentativa de conexão com o banco
  }

  function addErro($erro) { // Método para adicionar erros
    $this->ERROS = $this->ERROS . $erro;
  }
  
  function clearErros() { // Método que limpa os erros
    $this->ERROS = "";
  }
  
  function printErros() { // Método para impressão dos erros na tela
    if ($this->ERROS || $this->ERROS != "") {
      echo "<table width='98%' border='0' cellpadding='0' cellspacing='0' align='center'>";
      echo "<tr>";
      echo "<td class='td1' align='center' valign='middel'>";
      echo "<br>";
      echo $this->ERROS;
      echo "<br>";
      echo "</td>";
      echo "</tr>";
      echo "</table>";
    }
  }

  function connect() { // Método de conexão com o banco
    $this->clearErros();
  // Conexão com o SQL, se falhar é atribuido uma mensagem de erro à variável $  ERROS.
    $this->CONECTADO = 1;
    if (!@mysql_connect($this->HOST, $this->USER, $this->PASS)) {
      $this->addErro("Erro ao conectar ao banco de dados. Verifique o HOST, o   USUÁRIO e a SENHA.<br>");
      $this->CONECTADO = 0;
    }

  // Seleção do banco de dados, se falhar é atribuido uma mensagem de erro à variável $ERROS.
    if (!@mysql_select_db($this->DB)) {
      $this->addErro("Erro ao selecionar banco de dados. Verifique se o NOME DO   BANCO está correto.<br>");
      $this->CONECTADO = 0;
    }
    $this->printErros();
  }
  
  function verifyConnection() { // Método que retorna 1 se estiver conectado ou 0 se não estiver
    if ($this->CONECTADO == 1) { return 1; } else { return 0; }
  }
  
  function query($query) { // Método que executa instruções no SQL Server
    $this->clearErros();
    // Antes de tudo, vamos verificar se a conexão feita no método construtor está ativa ou não
    if ($this->CONECTADO != 1) {
    // Se não estiver ativa, teremos que terminar aqui, pois sem conexão nao podemos fazer nada.
      $this->addErro("Não conectado com o SQL. Use o método ->connect() para conectar.<br>");
      $this->printErros();
    } else {
    // Se estive corretamente conectado, teremos que verificar se a instrução é válida, ou seja, não está em branco.
      if (!$query || $query == "") {
        $this->addErro("Instrução SQL vazia, tente novamente.<br>");
        $this->printErros();
      } else {
    // Se estiver tudo OK, realizaremos a instrução no SQL, e se houver algum erro de sintáxe o próprio SQL irá dizer - Retornando 0 como resultado.
        $this->QUERY = $query;
        if (!$this->RESULTADO=@mysql_query($this->QUERY)) {
          $this->addErro("Não foi possível realizar a(s) instrução(ões) no SQL, verifique a sintaxe e tente novamente.<br>");
          $this->printErros();
        }
      }
    }
  }
  
  function instrucao($query) { // Retorna o array com o resultado da query -- retorna somente o primeiro resultado por não estar em um loop
    $this->QUERY($query);
    return @mysql_fetch_array($this->RESULTADO);
  }
  
  function printTable($query) { // Imprime uma tabela completa com os resultados da query
    $this->RESULTADO = $query;
    echo "<table border='0' cellpadding='0' cellspacing='0' align='center'>";
    echo "<tr>";
    for ($i=0; $i < mysql_num_fields($this->RESULTADO); $i++) {
      echo "<td class='tdTitle' align='center' valign='middel'>  " . mysql_field_name($this->RESULTADO, $i) . "  </td>";
    }
    echo "</tr>";
    $count = 0;
    while ($linha = mysql_fetch_array($this->RESULTADO)) {
      echo "<tr>";
      for ($i=0; $i < mysql_num_fields($this->RESULTADO); $i++) {
        if ($count % 2) { echo "<td class='td1'>";  } else { echo "<td class='td2'>"; }
        echo $linha[$i];
        echo "</td>";
      }
      echo "</tr>";
      $count++;
    }
    echo "</table>";
    
  }
  
  function queryPaginado($query, $pagina, $totalPagina) { // Retorna os resultados por pagina - OBS: Use um query normal, deixe que o LIMIT seja feito pelo método
    if (!$pagina || $pagina == 0) { $pagina = 1; }
    $inicio = ($pagina * $totalPagina) - ($totalPagina - 1);
    $this->QUERY = $query . " LIMIT " . $inicio . ", " . $totalPagina;
    $this->query($this->QUERY);
    $this->PAGINAS = 1;
    return $this->RESULTADO;
  }
  
  function printPaginas($query, $pagina, $totalPagina, $link) {
    if ($this->PAGINAS == 1) {
      if (!$pagina || $pagina == 0) { $pagina = 1; }
      $inicio = ($pagina * $totalPagina) - ($totalPagina - 1);
      $this->QUERY = $query;
      $this->query($this->QUERY);
      $numResultados = mysql_num_rows($this->RESULTADO);
      $numPaginas = ceil($numResultados / $totalPagina);
      $primeiraPagina = 1;
      $paginaAtual = $pagina;
      $ultimaPagina = $numPaginas;
      if ($paginaAtual == 1) { $paginaAnterior = 1; } else { $paginaAnterior = $paginaAtual - 1; }
      if ($paginaAtual == $ultimaPagina) { $proximaPagina = $ultimaPagina; } else { $proximaPagina = $paginaAtual + 1; }
      $linkAnterior = $link . "?pagina=" . $paginaAnterior;
      $linkPrimeira = $link . "?pagina=1";
      $linkProxima = $link . "?pagina=" . $proximaPagina;
      $linkUltima = $link . "?pagina=" . $ultimaPagina;
      echo "<a href=$linkAnterior class='botaoPagina'><<</a> ";
      echo "<a href=$linkPrimeira class='botaoPagina'>...</a>";
      for ($i = $paginaAtual; $i <= $paginaAtual+4; $i++) {
        if ($i <= $numPaginas) {
          $linkReal = $link . "?pagina=" . $i;
          if ($i < 10) { $num = 0 . $i; } else { $num = $i; }
            echo "<a href=$linkReal class=";
            if ($i == $paginaAtual) { echo "botaoPaginaAtivo"; } else { echo "botaoPagina"; }
            echo ">$num</a>";
        }
      }
      echo "<a href=$linkUltima class='botaoPagina'>...</a> ";
      echo "<a href=$linkProxima class='botaoPagina'>>></a>";
    }
  }
  
}
?>

Scripts recomendados

Banco de Dados xD

Bíblia Online TBS

Sistema php com Sqlite

Classe básica de acesso a PostgreSQL pronta para extensões

Backup do MySQL via PHP


  

Comentários
[1] Comentário enviado por pintofree em 07/07/2008 - 09:34h

Parabéns amigo, ficou muito bom, gostei principalmente da printTable, acho que so faltou um detalhe nesta função pra ela ficar perfeita. A possibilidade de adicionar cabeçalho e rodape as tabelas.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts