segunda-feira, 1 de junho de 2009

Classes banco PHP

Bem comecei a trabalhar com PHP, e como acho PHP muito sujo tentei limpar um pouco o código e resolvi desenvolver um conjunto de classes. O conjunto de classes ficou bem legal, então resolver compartilhar. Ainda tem algumas funções ainda estão em desenvolvimente.

Conectar a um banco

Código que faz a conexão com o banco.
//faz inclusão da classe
require_once 'lib/Generico.php';

//cria uma instancia da classe
$generico = new Generico();

//define os parametros para o banco
$generico->setUserDB("root");
$generico->setSenhaBanco("123mudar");
$generico->setDataBase("banco");
?>
Será feita conexão com o banco de dados com o usuário root e senha 123mudar.

Incluir valores

$generico->setNomeColunas(array("nome", "descricao"));
$generico->setValorColunas(array("Novidade1", "descricao1"));
$generico->incluirBanco();
setNomeColunas - Recebe um vetor com o nome das colunas da tabela
setValorColunas - Recebe um vetor com o valor da linha.
incluirBanco - Função responsável por incluir os valores no banco.

Econtrar Valores

$generico->encontrarBanco("idNovidade > 0");
while(($tabelaGenerico = $generico->getDadosTabela())) {
echo "Nome: $tabelaGenerico->nome Descrição: $tabelaGenerico->descricao
";
}
encontrarBanco - Recebe uma string onde vai ter a restrição para a presquisa, essa parte é a parte do WHERE da instrução SQL.
getDadosTabela - Retorna a linha encontrada no banco.

Alterar Valores

$generico->setNomeCampos(array("idNovidade", "nome", "descricao"));
$generico->setValorColunas(array("Novidade2", "descricao2"));
$generico->alterarBanco("idNovidade = 1");
setNomeCampos - Define os campos da tabela, agora vou precisar do campo idNovidade.
setValorColunas - Define os valores dos campos.
alterarBanco - Irá fazer a alteração no banco com o parâmetro que for informado.

Excluir Valores

$generico->excluirBanco("idNovidade = 1");
excluirBanco - Excluir o registro do critério.

Abaixo o código completo.
//importa a classe
require_once 'lib/dataBase/Generico.php';

//cria uma instancia da classe
$generico = new Generico();

//define paramento do banco
$generico->setUserDB("root");
$generico->setSenhaBanco("123mudar");
$generico->setDataBase("teste");
$generico->setNomeTabela("novidades");

//incluir registro
$generico->setNomeColunas(array("nome", "descricao"));
$generico->setValorColunas(array("Novidade1", "descricao1"));
$generico->incluirBanco();
$generico->setValorColunas(array("Novidade1", "descricao1"));
$generico->incluirBanco();
$generico->setValorColunas(array("Novidade1", "descricao1"));
$generico->incluirBanco();

//encontrar todos os registros
$generico->encontrarBanco("idNovidade > 0");
while(($tabelaGenerico = $generico->getDadosTabela())) {
echo "Nome: $tabelaGenerico->nome Descrição: $tabelaGenerico->descricao
";
}

//alterar dados
$generico->setNomeCampos(array("idNovidade", "nome", "descricao"));
$generico->setValorColunas(array("Novidade2", "descricao2"));
$generico->alterarBanco("idNovidade = 1");

//excluir um registro
$generico->excluirBanco("idNovidade = 1");
?>
O SQL da tabela utilizada do exemplo.
DROP TABLE IF EXISTS `novidades`;

CREATE TABLE IF NOT EXISTS `novidades` (
`idNovidade` int(10) unsigned NOT NULL AUTO_INCREMENT,
`nome` varchar(250) DEFAULT NULL,
`descricao` varchar(250) DEFAULT NULL,
PRIMARY KEY (`idNovidade`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Toda movimentação no banco é gerado um arquivo de log, onde informa se teve algum erro, e o que foi executado, por exemplo.
01/06/2009 - 15:26:04: INSERT INTO novidades(nome, descricao) VALUES('Novidade1', 'descricao1');
01/06/2009 - 15:26:04: INSERT INTO novidades(nome, descricao) VALUES('Novidade1', 'descricao1');
01/06/2009 - 15:26:04: INSERT INTO novidades(nome, descricao) VALUES('Novidade1', 'descricao1');
01/06/2009 - 15:26:04: SELECT COUNT(*) AS quantidade FROM novidades WHERE idNovidade > 0
01/06/2009 - 15:26:04: SELECT nome, descricao FROM novidades WHERE idNovidade > 0
01/06/2009 - 15:26:04: UPDATE novidades SET nome = 'Novidade2', descricao = 'descricao2' WHERE idNovidade = 1
01/06/2009 - 15:26:04: DELETE FROM novidades WHERE idNovidade = 1
Bem para poder baixar o conjunto de classes clique aqui.