Pô esses dias passei aqui no forum de php pra dar uma olhadinha e vi que estam postando classe de BD, então lembrei que eu tinha uma que montei a um tempo atás q eu achei bem legal então resolvi postar.
Bem, como eu enrolo mt e falo muito antes de postar alguma coisa, dessa vez resolvi ser mais direto e vou postar logo o código rss

.. ele ja está com a documentação nos comentários.
absss
CODE
<?php
##################### DOCUMENTAÇÃO ##########################
/*
@ Desenvolvida por: Reinaldo Torres : Carutcho
@ carutchows@gmail.com
---> VARIÁVEIS <---
bd -> variavel de conexão com o banco de dados
banco -> variável que informa o banco a ser utilizado
---> MÉTODOS <---
- conecta -> metodo que cria uma conexão com o banco de dados
sintaxe: conecta()
- query -> metodo que executa uma query e retorna o resultado da Query caso contrário, retorna FALSE
sintaxe: query(sql)
*sql - > Query que queira utilizar, Parâmetro Obrigatório.
- linhas -> Retorna o numero de linhas de uma determinada query caso contrário, retorna FALSE
sintaxe: linhas(sql)
*sql - > Query que queira utilizar, Parâmetro Obrigatório.
- resultFetch -> Faz o retorno de uma query através de um array, Caso não aja retorno ou aja erro, retorna FALSE
sintaxe: resultFetch($sql)
*sql -> Query que queira utilizar, Parâmetro Obrigatório.
- select -> Retorna um array com os resultados de um Select , Caso não aja retorno ou aja erro, retorna FALSE
sintaxe: select(camp,tab,[cond])
*camp -> Campos da tabela que deseja selecionar, separados por virgula. Parâmetro Obrigatório.
*tab -> Tabela no qual deseja fazer a consulta. Parâmetro Obrigatório.
*cond -> Condição para retorno do select. Parâmetro Opcional
- insert -> Executa uma Insersão no banco de dados, Retorna TRUE ou FALSE
sintaxe: insert(camp,tab,vals,[cond])
*camp -> Campos da tabela que devem ser inseridos valores, separados por virgula. Parâmetro Obrigatório.
*tab -> Tabela que deve ocorrer a insersão. Parâmetro Obrigatório.
*vals -> Valores que devem ser inseridos no banco,separados por virgula. Parâmetro Obrigatório.
Obs.: Os dados devem ser setados na mesma ordem dos campos.
*cond -> Condição para que seja inserido. Parâmetro Opcional
- update -> Executa uma atualização em de um ou mais registros no banco. Caso não aja retorno ou aja erro, retorna FALSE
sintaxe: update(camp,tab,vals,[cond])
*camp -> Campos que devem ser atualizados. Parâmetro Obrigatório.
*tab -> Tabela que deve ocorrer a alteração. Parâmetro Obrigatório.
*vals -> Valores que devem ser atualizados no banco,separados por virgula. Parâmetro Obrigatório.
Obs.: Os dados devem ser setados na mesma ordem dos campos.
*cond -> Condição para que seja alterado. Parâmetro Opcional
- delete -> Remoção de um ou mais registros no banco , Caso não aja retorno ou aja erro, retorna FALSE
sintaxe: delete(tab,[cond])
*tab -> tabela no qual quer remover registros . Parâmetro Obrigatório.
*cond -> Condição para remoção de registros.
--> padrão para documentar.
- insert ->
sintaxe:
*sql ->
*/
#############################################################
//** metodos da classe database
class database
{
protected $bd;
protected $banco;
//metodo de conexão com o banco
function database ($banco)
{
$this->banco=$banco;
$this->conecta ();
}
function conecta ()
{
if ($this->banco=='test')
{
$this->bd = @mysql_connect('localhost','carutcho','bancoTeste') OR die("Falha de Conexão com MySQL server!");
// echo @mysql_error($this->bd);
$BD = @mysql_select_db($this->banco, $this->bd) OR die("Falha na Escolha do Banco de Dados.!");;
// echo @mysql_error($this->bd);
}
}
//metodo de execução de uma query
function desconecta ()
{
return @mysql_close($this->bd);
}
//metodo de execução de uma query
function query($sql)
{
$this->conecta();
$var = @mysql_query($sql);
return $var ? $var : false;
$this->desconecta();
}
// metodo para retornar a quantidade de linhas de uma query
function linhas($sql)
{
$this->conecta();
return @mysql_num_rows(@mysql_query($sql));
$this->desconecta();
}
function resultFetch ($sql)
{
$this->conecta();
$res = self::query($sql);
return $res ? @mysql_fetch_array($res) : false;
$this->desconecta();
}
function select($camp,$tab,$cond)
{
$this->conecta();
if ( (isset($camp))&&(isset($tab))&&(isset($cond)) )
{
$sql = "select ".$camp." FROM ".$tab." WHERE ".$cond;
return $this->resultFetch($sql);
}
elseif ( (isset($camp))&&(isset($tab))&&(!isset($cond)) )
{
$sql = "select ".$camp." FROM ".$tab;
return $this->resultFetch($sql);
}
else
{
return false;
}
$this->desconecta();
}
function insert($camp,$tab,$vals,$cond)
{
$this->conecta();
if ($cond!='')
{
$sql = "INSERT INTO ".$tab." (".$camps.") VALUES ('".str_replace(',','\',\'',$vals)."') WHERE ".$cond;
$res = @mysql_query($sql);
return ( @mysql_affected_rows() )!=0 ? true : false;
}
elseif ($cond=='')
{
$sql = "INSERT INTO ".$tab." (".$camp.") VALUES ('".str_replace(',','\',\'',$vals)."')";
$res = @mysql_query($sql);
return ( @mysql_affected_rows() )!=0 ? true : false;
}
else
{
return false;
}
$this->desconecta();
}
function update($camp,$tab,$vals,$cond)
{
$this->conecta();
$campos = explode(',',$camp);
$valores = explode(',',$vals);
$i=0;
foreach( $campos as $key => $valor)
{
if ($i==0)
{
$atual .= $valor." = '".$valores[$i]."'";
}
else
{
$atual .= ",".$valor." = '".$valores[$i]."'";
}
$i++;
}
if ( $cond!='' )
{
$sql = "UPDATE ".$tab." SET ".$atual." WHERE ".$cond;
$res = $this->query($sql);
return ( @mysql_affected_rows() )!=0 ? true : false;
}
elseif ( $cond=='' )
{
$sql = "UPDATE ".$tab." SET ".$atual;
$res = $this->query($sql);
return ( @mysql_affected_rows() )!=0 ? true : false;
}
else
{
return false;
}
$this->desconecta();
}
function delete($tab,$cond)
{
$this->conecta();
if ( (isset($tab))&&(isset($cond)) )
{
$sql = "DELETE FROM ".$tab." WHERE ".$cond;
$res = $this->query($sql);
return ( @mysql_affected_rows() )!=0 ? true : false;
}
elseif ( (isset($tab))&&(!isset($cond)) )
{
$sql = "DELETE FROM ".$tab;
$res = $this->query($sql);
return ( @mysql_affected_rows() )!=0 ? true : false;
}
else
{
return false;
}
$this->desconecta();
}
}
?>
Comentários:
Carutcho disse:
Eu postei essa classe em outro forum tb, la me pediram para q eu escrevesse alguns exemplos de como utilizar a classe, então escrevi alguns exemplos aqui para ficar melhor o entendimento de vo6.
Mas antes tem uma correção no método de insert aqui está o novo código, o insert não tem necessidade de por condição então eu re-escrevi o metodo.
function insert($camp,$tab,$vals)
{
$this->conecta();
$sql = "INSERT INTO ".$tab." (".$camp.") VALUES ('".str_replace(',','\',\'',$vals)."')";
$res = @mysql_query($sql);
return ( @mysql_affected_rows() )!=0 ? true : false;
$this->desconecta();
}
Aqui em baixo to usando os métodos em várias situações diferentes para mostrar como funcionaria.
Instanciando a classe para usar os métodos dela passando como parâmetro o banco
obs: usuário, senha, porta e tudo passado na classe, coloquei dessa maneira para que se possa usar a mesma classe para bancos diferentes sem ter q criar varias classes.
Eu escrevi assim o código, pq eu tinha necessidade de fazer conexão em bancos diferentes e trabalhar com as 2 conexões ao mesmo tempo.
Executando uma query livre que retorna o nomes de uma tabela usando métodos "query" para execuar a query e o método "linhas" para pegar a quantidade de linhas
$resultado = $bd->query($sql);
if ($resultado!=false)
{
for ($i=0; $i<$bd->linhas($sql); ++$i)
{
echo "nome: ".mysql_result($resultado,$i)."/n";
}
}
Fazendo o mesmo processo de cima só q com outros métodos da classe, o método select retorna um mysql_fetch_array(result), caso não tenha resultado retorno é false.
if ($resultado!=false)
{
while($rows = $resultado)
{
echo "nome : ".$resuldado['nome']."\n";
}
}
mesmo exemplo só q usando condição no select e usando mais de 1 tabela
if ($resultado!=false)
{
while($rows = $resultado)
{
echo "nome: ".$resuldado['nome']."/n";
}
}
Inserindo um registo numa tabela
if ($resultado==true) echo "registro inserido com sucesso.";
else echo "registro não inserido.";
Deletando todos os registros de uma tabela.
if ($resultado==true) echo "registros removido com sucesso.";
else echo "registros não removidos.";
Deletando alguns os registros de uma tabela.
if ($resultado==true) echo "registros removidos com sucesso.";
else echo "registros não removidos.";
Os métodos do update não se serviriam mt ou teriam utilidades, pq eu usei ele para um caso especítico meu, meu cadastro eu postava todos os campos do formulário com os mesmos nomes que eu colocava na tabela, com algumas modificações para meu uso, então quando eu postava o formulário, eu separava todos os nomes com "," e todos os valores tb com a mesma ordem e depois utilizava esses métodos para fazer tudo direto pra mim, então eu achava isso mais prático, não sei se será útil pra todos.
Atualizando todos os registros de uma tabela.
if ($resultado==true) echo "registros alterados com sucesso.";
else echo "registros não alterados.";
Atualizando alguns os registros de uma tabela.
if ($resultado==true) echo "registros alterados com sucesso.";
else echo "registros não alterados.";
Outra observação, eu não trabalho com php tem 1 ano, essa classe ja foi escrita a um tempo e eu não testei todos os códigos, usei baseado pela que postei aqui, só tenho php + mysql no meu comp do trabalho só para estudo e como estou em casa não testei nada
Qualquer dúvida ou problema, poste aee q eu tento ajudar com o que precisar.
Absss e espero tenham gostado da classe.
GustavoGAGU disse:
tô aprendendo usar sua classe, mas o select não teve eito, não consegui fazer funcionar
quando vai pra o while ele entra num loop infinito, pelo que eu olhei na classe tá tudo certinho, tá executando a query certinho.
mas esse while ai tá errado ou não?
me ajuda ai, tô sem terminar um trabalho aqui por isso.
tirando esse probelminha ai, tá tudo ok. valeu pela ajuda.
abraço, João Gustavo
pode me mandar a resposta por e-mail: gagu2030@hotmail.com
LeandroDaronch disse:
e-mail ldaronch@yahoo.com.br
Obrigado
Carutcho disse:
Desculpe o atraso nas respostas, eu literalmente esqueci de acompanhar essa parte do forum,
eu fiz algumas alterações na classe a pouco tempo, vou postar aqui caso ainda haja dúvidas vou acompanhar para responder ok
Abssss e desculpem mais uma vez
//** metodos da classe database
class database
{
protected $bd;
protected $banco;
//metodo de conexo com o banco
function database ($banco)
{
$this->banco=$banco;
$this->conecta ();
}
function conecta ()
{
if ($this->banco=='SGM')
{
$this->bd = @mysql_connect('localhost','root','carutcho') OR die("Falha de Conexo com MySQL server!");
$BD = @mysql_select_db($this->banco, $this->bd) OR die("Falha na Escolha do Banco de Dados.!");
}
}
function desconecta ()
{
return @mysql_close($this->bd);
}
//metodo de executo de uma query
function query($sql)
{
$this->conecta();
$var = @mysql_query($sql);
return $var ? $var : false;
$this->desconecta();
}
function queryCSV($sql)
{
$this->conecta();
$result = array();
$res = @mysql_query($sql);
if($res){
while ($row = mysql_fetch_assoc($res)){
$result[] = $row;
}
}else {
return false;
}
return $result;
$this->desconecta();
}
// metodo para retornar a quantidade de linhas de uma query
function linhas($sql)
{
$this->conecta();
return @mysql_num_rows(@mysql_query($sql));
$this->desconecta();
}
function resultFetch ($sql)
{
$this->conecta();
$res = self::query($sql);
return $res ? @mysql_fetch_array($res) : false;
$this->desconecta();
}
function select($camp,$tab,$cond=null)
{
$this->conecta();
if ( (isset($camp))&&(isset($tab))&&(isset($cond)) )
{
$sql = "select ".$camp." FROM ".$tab." WHERE ".$cond;
return $this->resultFetch($sql);
}
elseif ( (isset($camp))&&(isset($tab))&&(!isset($cond)) )
{
$sql = "select ".$camp." FROM ".$tab;
return $this->resultFetch($sql);
}
else
{
return false;
}
$this->desconecta();
}
function insert($camp,$tab,$vals)
{
$this->conecta();
if ((isset($tab))&&(isset($camp))&&(isset($vals)))
{
$sql = "INSERT INTO ".$tab." (".$camp.") VALUES ('".str_replace(',','\',\'',$vals)."')";
$res = @mysql_query($sql);
return (@mysql_affected_rows())!=0 ? true : false;
}
else
{
return false;
}
$this->desconecta();
}
function update($camp,$tab,$vals,$cond=null)
{
$this->conecta();
$campos = explode(',',$camp);
$valores = explode(',',$vals);
$i=0;
foreach( $campos as $key => $valor)
{
if ($i==0)
{
$atual .= $valor." = '".$valores[$i]."'";
}
else
{
$atual .= ",".$valor." = '".$valores[$i]."'";
}
$i++;
}
if ( $cond!='' )
{
$sql = "UPDATE ".$tab." SET ".$atual." WHERE ".$cond;
$res = $this->query($sql);
return ( @mysql_affected_rows() )!=0 ? true : false;
}
elseif ( $cond=='' )
{
$sql = "UPDATE ".$tab." SET ".$atual;
$res = $this->query($sql);
return ( @mysql_affected_rows() )!=0 ? true : false;
}
else
{
return false;
}
$this->desconecta();
}
function delete($tab,$cond=null)
{
$this->conecta();
if ( (isset($tab))&&(isset($cond)) )
{
$sql = "DELETE FROM ".$tab." WHERE ".$cond;
$res = $this->query($sql);
return ( @mysql_affected_rows() )!=0 ? true : false;
}
elseif ( (isset($tab))&&(!isset($cond)) )
{
$sql = "DELETE FROM ".$tab;
$res = $this->query($sql);
return ( @mysql_affected_rows() )!=0 ? true : false;
}
else
{
return false;
}
$this->desconecta();
}
}
?>
Ver o restante dos comentários no fórum (e aproveitar pra comentar também !).