Webly: Classe Para Controle De Banco De Dados. - Webly

Ir para

Regras para postagem

É permitido postar livremente respostas com comentários, testes e avaliações dos scripts. Postagens contendo dúvidas sobre o script, deverão ser postadas no fórum principal de PHP

IMPORTANTE: Todos os tutoriais postados neste fórum irão automaticamente para o portal Webly. Contribua você também e faça parte da equipe de colaboradores que fazem a evolução da web. Obrigado.
Página 1 de 1

Classe Para Controle De Banco De Dados. Classe para facilitar a manipulação de banco de dados Avaliar tópico: -----

#1 Membro offline   Pinguim Ícone

  • Doce-de-leite :D
  • Ícone
  • Grupo: Moderadores
  • Posts: 651
  • Cadastrado: 22-junho 07
  • Localização:São Paulo - SP
  • Interesses:PHP;<br />JavaScript // Ajax;<br />Photoshop;

Postou 24 outubro 2008 - 12:56

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:

<?

#####
#    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)
 $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:
 $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
 $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:

 $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:

 $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

 $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
 $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.
 $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

 $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!
you could be my someone, you could be my sin

+--
Eu sou oficialmente um adulto: A conta bancária está negativa...
0

#2 Membro offline   Micox Ícone

  • Comunidade de desenvolvedores
  • Ícone
  • Grupo: Administradores
  • Posts: 5511
  • Cadastrado: 03-julho 06
  • Localização:Goiânia-GO
  • Interesses:Webly e elmicox.blogspot.com

Postou 29 outubro 2008 - 09:17

Very good pingua.
Valeus.
valeus.net/mwords - Links automáticos p/ o MercadoLivre em seu texto

Ajude, responda: mesmo que não saiba exatamente a resposta, seu pitaco pode dar uma luz no problema do outro.
Não respondo dúvidas por MP / Email / MSN e afins. O fórum está aqui pra isto.

elmicox.blogspot.com
0

Página 1 de 1


Resposta rápida

  

1 usuário(s) está(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)