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 wink.gif.. 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();        
    }

}

?>

Você gostou? Comente no fórum!

Comentários:

Carutcho disse:

Fala aee galera blzzzzzzzzz ?? biggrin.gif

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.

CODE

     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.
CODE
     $bd = new database('test');


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

CODE
     $sql = "select nome from tabela"
     $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.

CODE
     $resultado = $bd->select('nome','tabela');
     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
CODE
     $resultado = $bd->select('nome','tabela a, tabela b','a.nome=b.nome and a.nome=carutcho');
     if ($resultado!=false)
     {
         while($rows = $resultado)
         {
             echo "nome: ".$resuldado['nome']."/n";
         }
     }



Inserindo um registo numa tabela
CODE
         $resultado = $bd->insert('nome,idade','tabela','carutcho,24');
         if ($resultado==true) echo "registro inserido com sucesso.";
         else echo "registro não inserido.";


Deletando todos os registros de uma tabela.
CODE
         $resultado = $bd->delete('tabela','');
         if ($resultado==true) echo "registros removido com sucesso.";
         else echo "registros não removidos.";


Deletando alguns os registros de uma tabela.
CODE
         $resultado = $bd->delete('tabela','nome=carutcho');
         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.
CODE
         $resultado = $bd->update('nome,idade','tabela','carutcho,24','')
         if ($resultado==true) echo "registros alterados com sucesso.";
         else echo "registros não alterados.";


Atualizando alguns os registros de uma tabela.
CODE
         $resultado = $bd->update('nome,idade','tabela','carutcho,24','id=1 and idade<>24')
         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 sad.gif, mas creio que funfe assim mesmo.

Qualquer dúvida ou problema, poste aee q eu tento ajudar com o que precisar.


Absss e espero tenham gostado da classe.

GustavoGAGU disse:

Reinaldo,

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:

Bons Dias

excl.gif Estou com o mesmo problema relacionado ao LOOP gerado pelo WHILE de mysql_fetch_array(); na verdade, percebi que não existe retorno de condições multiplas, a classe está retornando apenas um único registro da tabela.

ok.gif Achei Show demais essa classe, mas tem esse detalhe, se alguém puder me dar uma LUZ agradeço muito clapping.gif

e-mail ldaronch@yahoo.com.br

Obrigado thumbsup.gif

Carutcho disse:

Gente ,

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 wink.gif

Abssss e desculpem mais uma vez


CODE
<?

//** 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 !).

Mais recentes em PHP

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...
Decimal para hexadecimal
Por dragun - Exemplo de função recursiva...

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