Classe para uso com o mysql
Publicado por Vinicus S Moraes 05/07/2008
[ Hits: 6.599 ]
Homepage: http://vsmoraes.wordpress.com
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...
<!-- 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>"; } } } ?>
Listando todos os Bancos de dados do servidor MySQl
Criando um Portal de Notícias baseado em PHP/MySQL
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Linux não é para todo mundo (0)
Preciso de ajuda para mudar do ubuntu para fedora (6)
Linux Mint nao reconhece segundo monitor. (0)
É possível baixar o dicionário pt-br para /usr/share/dict no Linux Min... (1)