Classe para uso com o mysql
Publicado por Vinicus S Moraes 05/07/2008
[ Hits: 6.990 ]
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>";
}
}
}
?>
Classe de conexão ao banco usando PDO
Executar arquivos do mysql por meio do php
Testando servidor MySQL e base de dados
Classe básica de acesso a MySQL pronta para extensões
Classe eveQuery: Interação com banco de dados
KDE Plasma - porque pode ser a melhor opção de interface gráfica
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Instalar Linux em notebook Sony Vaio VPCEG13EB (13)
Vou destruir sua infância:) (7)
Interface gráfica com problema (0)









