Classe para uso com o mysql
Publicado por Vinicus S Moraes 05/07/2008
[ Hits: 6.880 ]
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>";
}
}
}
?>
Pesquisando em PostGreSQL [golfinho/Elefante]
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
PIP3 - erro ao instalar módulo do mariadb para o Python (9)
É normal não gostar de KDE? (8)
O programa assinador digital (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









