Ir para conteúdo
Fórum Script Brasil
  • 0

Classe de conexao a db php..


Mathias Brem

Pergunta

Galera,

Seguinte...

Estou desenvolvendo uma classe que possa fazer a conexao com qualquer banco indiferentemente

para tal... preciso executar um variavel ou melhor varias...

e não estou conseguindo.

estou postando meu codigo abaixo,

talves ajude a entender melhor o que quero fazer...

<?php

class database{
    private $host;
    private $database;
    private $user;
    private $password;
    private $id;

    
    private $conecta;
    private $desconecta;
    private $selecionaDB;
    private $executaQuery;

    
    function __construct($Vversao){
        if($Vversao == "pg"){
            $this->conecta = pg_connect;
            $this->desconecta = pg_close;
            $this->executaQuery = pg_query;
        
        }else if($Vversao == "mysql"){
            $this->conecta = mysql_connect;
            $this->desconecta = mysql_close;
            $this->selecionaDB = mysql_select_db;
            $this->executaQuery = mysql_query;
        
        }else if($Vversao == "mssql"){
            $this->conecta = mssql_connect;
            $this->desconecta = mssql_close;
            $this->selecionaDB = mssql_select_db;
            $this->executaQuery = mssql_query;
        
        }else {
        
        echo "O construtor deve conter o tipo de banco de dados ex: new database('mysql')";
        }
    }
    
    public function Conecta($Vhost,$Vuser,$Vpassword){
        $this->host = $Vhost;
        $this->user = $Vuser;
        $this->password = $Vpassword;
        
        if(!($this->id = $this->conecta($this->host,$this->user,$this->password))){
               echo "Não foi possível estabelecer uma conexão com o DB.";
            exit;
        }

    }
    
    public function Conecta($Vhost,$Vuser,$Vpassword,$Vdatabase){
        $this->host = $Vhost;
        $this->user = $Vuser;
        $this->password = $Vpassword;
        $this->database = $Vdatabase;
                
        if(!($this->id = $this->conecta($this->host,$this->user,$this->password,$this->database))){
               echo "Não foi possível estabelecer uma conexão com o DB.";
            exit;
        }

    }
    
    
    
    public function SelecionaDB($Vdatabase){
        if($Vversao!="pg"){
            $this->database = $Vdatabase;
            if(!($this->selecionaDB($this->database,$this->id))){
                echo "Não foi possível selecionar o banco de dados";
                exit;
            }
        }else echo"Atencão você está usando o postgresql o banco de dados deve ser selecionado durante a conexão";
    }
    
    public function Desconecta(){
        if (!($this->desconecta($this->id))){
            echo "não foi possivel encerrar a conexao";
            exit;
        }
    }
    
    public function Query($query){
        $exec = $this->executaQuery($query);
        return $exec;
    }
    
}


?>

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Entendi o que você quer fazer, só não entendi o que você não está conseguindo fazer...

então...

Assim,

a variavel $conecta por exemplo.Se o banco de dados for mysql, a variavel deverá ser mysql_connect certo.

beleza.

quando eu dou um var_dump($obj) no meu objeto mostra q a variavel $conecta carregou o valor mysql_connect

porém o php não esta executando a variavel como um comando entende.

laah pra baixo tem o metodo

public function Conecta($Vhost,$Vuser,$Vpassword){

$this->host = $Vhost;

$this->user = $Vuser;

$this->password = $Vpassword;

if(!($this->id = $this->conecta($this->host,$this->user,$this->password))){

echo "Não foi possível estabelecer uma conexão com o DB.";

exit;

}

}

repare nesse trecho:

$this->conecta($this->host,$this->user,$this->password

ele não é executado entende.?

o php nem continua a execução do programa.

Tipo se eu print isso vai mostrar td certinho tipo:

mysql_connect(host,usuario,senha);

porem não é executado o php deve estar entendendo isso como uma string

Andei garimpando por ai na net e vi uma funcao assim:

eval();

mais não consegui usar também..

Agradeço

Link para o comentário
Compartilhar em outros sites

  • 0
Galera,

Seguinte...

Estou desenvolvendo uma classe que possa fazer a conexao com qualquer banco indiferentemente

para tal... preciso executar um variavel ou melhor varias...

e não estou conseguindo.

estou postando meu codigo abaixo,

talves ajude a entender melhor o que quero fazer...

<?php

class database{
    private $host;
    private $database;
    private $user;
    private $password;
    private $id;

    
    private $conecta;
    private $desconecta;
    private $selecionaDB;
    private $executaQuery;

    
    function __construct($Vversao){
        if($Vversao == "pg"){
            $this->conecta = pg_connect;
            $this->desconecta = pg_close;
            $this->executaQuery = pg_query;
        
        }else if($Vversao == "mysql"){
            $this->conecta = mysql_connect;
            $this->desconecta = mysql_close;
            $this->selecionaDB = mysql_select_db;
            $this->executaQuery = mysql_query;
        
        }else if($Vversao == "mssql"){
            $this->conecta = mssql_connect;
            $this->desconecta = mssql_close;
            $this->selecionaDB = mssql_select_db;
            $this->executaQuery = mssql_query;
        
        }else {
        
        echo "O construtor deve conter o tipo de banco de dados ex: new database('mysql')";
        }
    }
    
    public function Conecta($Vhost,$Vuser,$Vpassword){
        $this->host = $Vhost;
        $this->user = $Vuser;
        $this->password = $Vpassword;
        
        if(!($this->id = $this->conecta($this->host,$this->user,$this->password))){
               echo "Não foi possível estabelecer uma conexão com o DB.";
            exit;
        }

    }
    
    public function Conecta($Vhost,$Vuser,$Vpassword,$Vdatabase){
        $this->host = $Vhost;
        $this->user = $Vuser;
        $this->password = $Vpassword;
        $this->database = $Vdatabase;
                
        if(!($this->id = $this->conecta($this->host,$this->user,$this->password,$this->database))){
               echo "Não foi possível estabelecer uma conexão com o DB.";
            exit;
        }

    }
    
    
    
    public function SelecionaDB($Vdatabase){
        if($Vversao!="pg"){
            $this->database = $Vdatabase;
            if(!($this->selecionaDB($this->database,$this->id))){
                echo "Não foi possível selecionar o banco de dados";
                exit;
            }
        }else echo"Atencão você está usando o postgresql o banco de dados deve ser selecionado durante a conexão";
    }
    
    public function Desconecta(){
        if (!($this->desconecta($this->id))){
            echo "não foi possivel encerrar a conexao";
            exit;
        }
    }
    
    public function Query($query){
        $exec = $this->executaQuery($query);
        return $exec;
    }
    
}


?>
talves não esteja funcionando porque está interpretando como uma string qualquer e não como um comando. veja esse exemplo bem simple que fiz suportando apenas o mysql está funcionando corretamente
<?php

class database{
/* variaveis para conecção */
private $Host;
private $Senha;
private $Usuario;
private $Banco;
/* mensagens do sistema */
private $Erro;
private $Validar;
private $Retorno;
/* conecxões suportadas */
private $Conectar=array("mysql","pg","mssql");
private $Conexao;
private $Conect;

function Conectar()
                 {
                  switch($this->Conexao)
                        {
                         case "mysql":
                                      $this->Conect=mysql_connect(trim($this->Host), trim($this->Usuario), trim($this->Senha));
                                      if ($this->Conect)
                                         {
                                          if (mysql_select_db($this->Banco,$this->Conect))
                                          {
                                          $this->Validar=='S';
                                          $this->Conexao='Conectado';
                                          $this->Retorno='Conecxão realizada com sucesso.';
                                          }
                                           else
                                          {
                                           $this->Validar="N";
                                           $this->Conexao="Conectado";
                                           $this->Retorno="Não foi posivel selecionar o banco indicado.".mysql_error();
                                          }

                                         }
                                          else
                                         {
                                          $this->Validar='N';
                                          $this->Conexao='Desconectado';
                                          $this->Retorno="Erro ao tentar estabelecer uma conexão a host $this->Host:".mysql_error();
                                         }
                         break;
                         case "pg":
                         break;
                         default:
                                 $this->Validar='N';
                                 $this->Conexao='Desconectado';
                                 $this->Retorno="Opção inexperada ou não suportada pela class.";
                         break;
                        }
                 }
                 
 function SetarDados($host,$senha,$user,$banco)
                    {
                     $this->Host=$host;
                     $this->Senha=$senha;
                     $this->Usuario=$user;
                     $this->Banco=$banco;
                    }
                    
 function SelecionarOption($Option)
                          {
                           if (in_array($Option,$this->Conectar))
                              {
                               $this->Conexao=$Option;
                              }
                               else
                              {
                               $this->Validar='N';
                               $this->Retorno="Opção inexperada ou não suportada pela classe.";
                              }
                          }
                    
 function Validar($publicar)
                 {
                  switch($this->Conexao)
                        {
                         case "Desconectado":
                               $Erro[status]="Desconectado";
                               $Erro[msg]=$this->Retorno;
                               $Erro[validar]='N';
                         break;
                         case "Conectado":
                               $Erro[status]="Conectado";
                               $Erro[msg]=$this->Retorno;
                               $Erro[validar]='S';
                         break;
                         case "":
                               $Erro[status]="Conecxão indefinida.";
                               $Erro[msg]="Tente instanciar a função para conectar ao banco.";
                               $Erro[validar]='N';
                         break;
                         default:
                               $Erro[status]="Conecxão indefinida.";
                               $Erro[msg]="Tente instanciar a função para conectar ao banco.";
                               $Erro[validar]='N';
                         break;
                        }
                  return $Erro;
                 }

 function ReportErro($Public)
                    {
                     switch ($Public)
                            {
                             case 1: /* caso um imprime o erro */
                                    if ($this->Validar=='N')
                                       {
                                        if (!empty($this->Conexao))
                                           {
                                            echo "status da conexao: $this->Conexao <Br />";
                                           }
                                        echo "$this->Retorno";
                                       }
                                        else
                                       {
                                        echo $this->Retorno;
                                       }
                             break;
                             case 2:
                                    echo $this->Retorno;
                             break;
                             default: /* retorna o resultado */
                                    $Erro[status]=$this->Conexao;
                                    $Erro[msg]=$this->Retorno;
                                    return $Erro;
                             break;
                            }
                    }
 function __construct($host,$senha,$user,$banco,$Option)
                     {
                      /* setando dados */
                      $this->SetarDados($host,$senha,$user,$banco);
                      /* selecionando opção de banco. */
                      $this->SelecionarOption($Option);
                      /* verificando se ouve erro */
                      $this->ReportErro($Public=1);
                      /* estabelecendo conecxao ao banco. */
                      $this->Conectar();
                      /* verificando msg */
                      $this->ReportErro($Public=2);

                     }

}

$con=new database("dbmy0032.whservidor.com","senha","user","banco","mysql");
?>

espero que possa servir para alguma coisa as ideias acima até mais

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...