Boas pessoal! Eu sei que eu ando meio sumido e etc, mas sempre que posso ainda dou uma passadinha por aqui.
Faz um tempo que eu não trago nenhum tutorial pra vocês, e essa semana eu precisava de um jeito simples de manipular um banco de dados, que fosse ao mesmo tempo dinâmico, permitindo ser usado com qualquer DB. Montei a classe abaixo:

CODE

<?

#####
# Classe ManageDB - Controle de Banco de Dados
# Autor: Filipe Kiss
# Release: 1.0.2
# Último release: 2008-10-24
#####

Class managedb
{
var $dbh, $lastResult;
function managedb($u, $s, $b, $h)
{
$this->__construct($u, $s, $b, $h);
}

function __construct($usuario, $senha, $banco, $host)
{
$this->dbh = mysql_connect($host, $usuario, $senha) or die ("Erro Ao Conectar com o Servidor ".$host." com o usuário ".$usuario);
mysql_select_db($banco, $this->dbh) or die ("Servidor Conectado com Sucesso. Erro ao tentar acessar o banco ".$banco." com o usuário ".$usuario);
}

function query($query) {
// initialise return
$return_val = 0;
$this->result = @mysql_query($query, $this->dbh);
if(mysql_error($this->dbh) != '')
{
$this->result = false;
}
$this->lastResult = $this->result;
return $this->result;
}

function get_var($query) {
$this->result = $this->query($query);
if($this->result)
{
if(mysql_num_rows($this->result) != 0)
$this->return_value = mysql_result($this->result, 0);
else
$this->return_value = 0;
}
else
{
$this->return_value = false;
}
$this->lastResult = $this->return_value;
return $this->return_value;
}

function get_results($query)
{
$this->result = $this->query($query);
if($this->result)
{
$this->return_value = array();
if(mysql_num_rows($this->result) != 0)
{
while($this->data = mysql_fetch_assoc($this->result))
{
$this->return_value[] = $this->data;
}
}
else
{
$this->return_value = 0;
}
}
else
{
$this->return_value = false;
}
$this->lastResult = $this->return_value;
return $this->return_value;
}
function get_row($query)
{
$this->result = $this->query($query);
if($this->result)
{
if(mysql_num_rows($this->result) != 0)
{
while($this->data = mysql_fetch_assoc($this->result))
{
if(!$this->tempData)
{
$this->tempData = $this->data;
}
}
$this->return_value = $this->tempData;
unset($this->tempData);
}
else
{
$this->return_value = 0;
}
}
else
{
$this->return_value = false;
}
$this->lastResult = $this->return_value;
return $this->return_value;
}

function insert($table, $fields, $values)
{
if(!is_array($fields))
{
$fields = explode("," , $fields);
}
if(!is_array($values))
{
$values = explode(", " , $values);
}
if(count($fields) != count($values))
{
$this->lastResult = false;
return false;
}
$query = "INSERT INTO " . $table . " ( ". join(", " , $fields) . " ) VALUES ( " . join(", " , $values) . " ) ";
$this->lastResult = $this->query($query);
return $this->lastResult;
}

function update($table , $fields , $values, $conditional)
{
if(!is_array($fields))
{
$fields = explode("," , $fields);
}
if(!is_array($values))
{
$values = explode("," , $values);
}
if(count($fields) != count($values))
{
$this->lastResult = false;
return false;
}
$query = "UPDATE " . $table . " SET ";
foreach($fields as $key => $field)
{
$updates[] = $field . " = " . $values[$key];
}
$query .= join(", ",$updates). " " . $conditional;
$this->lastResult = $this->query($query);
return $this->lastResult;
}

function delete($table, $id, $value)
{
if(is_array($id) && is_array($value) && (count($id) == count($value))
{
$query = "--Delete Query - Deleting ".count($id)." records from ".$table."\n";
foreach($id as $k => $i)
{
$query .= "DELETE FROM " . $table . " WHERE " . $i . " = '" . $value[$k] . "';"."\n\r";
}
$this->lastResult = $this->query($query);
return $this->lastResult;
}
elseif($id && $value)
{
$query = "DELETE FROM " . $table . " WHERE " . $id . " = '" . $value . "';";
$this->lastResult = $this->query($query);
return $this->lastResult;
}
else
{
$this->lastResult = false;
return false;
}
}

}

?>


A classe não tem muitos segredos. Qualquer pessoa com um conhecimento um pouco mais avançado de PHP vai entender a classe acima perfeitamente

Mas para aqueles que conhecem muito pouco eu vou dar uma breve explanação abaixo;

Iniciando a classe:

Inicie-a como um objeto comum, passando os parâmetros (usuário, senha, banco e host)
CODE
$mysql = new managedb("usuario", "senha", "banco_sql", "localhost");


Depois de iniciar você pode usar qualquer um dos métodos da classe. Você pode usar tanto um retorno:
CODE
$myVar = $mysql->query("SELECT * FROM minha_tabela");

ou você pode simplesmente chamar o método e imprimir a variavel lastResult do objeto. Essa variável vai SEMPRE guardar o mesmo valor do retorno do último método executado
CODE
$mysql->query("SELECT * FROM minha_tabela");
echo $mysql->lastResult;

O efeito dos dois códigos é o mesmo.

Método managedb::get_var
Retorna apenas uma váriavel:

CODE
$myVar = $mysql->get_var("SELECT COUNT(*) FROM minha_tabela");


O Exemplo acima vai retornar uma String com o total de registros na tabela. O tipo retornado é SEMPRE uma string

Método managebd::get_row
Retorna uma linha inteira de resultados:

CODE
$myRow = $mysql->get_row("SELECT * FROM minha_tabela WHERE id = '1'");


Vai retornar um Array contendo os valores da linha. O array é associativo. Ou seja, chamar $myRow['id'] vai mostrar a ID;

Método managedb::get_results
Retorna um ou mais resultados a partir de uma query

CODE
$myResults = $mysql->get_results("SELECT * FROM minha_tabela LIMIT 0, 10");


Vai retornar um array múltiplo. O primeiro índice será sempre numérico e SEMPRE iniciara com 0. Pra cada item desse array, um novo array, associativo, como se fosse um managedb::get_row. Ex.: $myResults[0]['id'] é o campo ID do primeiro resultado encontrado.

Método managedb::insert
Insere um registro na tabela
CODE
$mysql->insert("minha_tabela", "campo1, campo2", "valor1, valor2");
//Ou então você pode usar os campos como arrays
$mysql->insert("minha_tabela", array("campo1", "campo2"), array("valor1", "valor2"));

Atenção! O número de campos e de valores deve ser igual. Caso contrário a função retorna FALSE. Você pode separar os campos por vírgulas ou então como elementos de um array.

Método managedb::update
Atualiza as informações de um registro na tabela.
CODE
$mysql->update("minha_tabela", "campo1", "valor1", "WHERE id = '1'");

Segue o formato (tabela, campo, valor, condição). A condição deve ser escrita na sintaxe MySQL padrão. campo e valor podem ser arrays, desde que tenham o mesmo tamanho e os mesmos indices.

Método managedb::delete
Remove um registro da tabela

CODE
$mysql->delete("minha_tabela", "id", "1");


Segue o padrão (tabela, campo, valor). Vai remover o registro da tabela quando campo for igual a valor.

Desculpem se está meio confuso. Fiz meio na pressa. Ainda vou melhorar bastante isso aqui.

Próximos passos: Criar Tabelas, Atualizar Tabelas e Deletar Tabelas.

Deêm sugestões do que mais pode ser implementado ^-^

Até mais pessoal!

Você gostou? Comente no fórum!

Mais recentes em PHP

Envio e-mail simples, em smtp autenticado, em html
Por xKuRt - Série de tutoriais sobre a biblioteca phpmailer...
Classe para controle de banco de dados.
Por Pinguim - Classe para facilitar a manipulação de banco de dados...
Mail injection em php
Por Micox - What??!?...
Zend frameworks - o inicio
Por LeandroBarral - Primeiros passos.....
Classe de conexão com mysql
Por Carutcho - Pô esses dias passei aqui no forum de php pra dar uma...

Ver mais Artigos de PHP.

Ver e retirar outras dúvidas no fórum Webly.

Alguns Direitos Reservados | RSS | O Fórum

Webly Portal e Fóruns - Internet + Humana | Design by ArthurHenrique.com