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

PHP+Oracle


RValentim

Pergunta

Boa Tarde a todos,

Estou com um projeto para entregar até o fim de março aqui no trabalho, a minha dificuldade é criar um conexão com o Oracle em Camadas, em outras empresas já realizei um projeto parecido porém foi utilizando MySQL e MSSQL.

Estou precisando somente de dicas ou exemplos de como fazer as "functions" de select, insert, update e etc igual como fiz nos meus outros projetos.

Exemplo das Conexões MySQL e MSSQL

MySql

Arquivo: Banco.php

<?
  class Banco {
    private $server;
    private $bd;
    private $user;
    private $password;
    private $erro;
    private $result;
    private $conexao;

    public function Banco ($u="",$s="",$b="projetophp",$serve="localhost") {
      if(!$this -> SetConexao($serve,$u,$s)) {
        $this -> SetErro("Erro de Conexão - ".mysqli_error($this -> GetConexao()));
        return false;
      }
      if(!$this -> SetBd($b)) {
        $this -> SetErro("Banco não Encontrado - ".mysqli_error($this -> GetConexao()));
        return false;
      }
    }

... [Outros Getters e Setters] ...

    public function SetConexao ($s,$u,$p){
      if($this -> conexao = mysqli_connect($s,$u,$p)) {
        return true;
      }
      return false;
    }

    public function SetBd ($bd) {
      $this -> bd = $bd;
      if(mysqli_select_db($this -> GetConexao(),$bd)) {
        return true;
      }
      return false;
    }

    public function SelectSQL($sql) {
      if($result = mysqli_query($this -> GetConexao(),$sql)) {
        $this -> SetResult($result);
        return true;
      }
      $this -> SetErro("Query Inválida - ".mysqli_error($this -> GetConexao()));
      return false;
    }

// Insert e Update
    public function InsertSQL($sql) {
      if(mysqli_query($this -> GetConexao(),$sql)) {
        return true;
      }
      $this -> SetErro("Query Invalida - ".mysqli_error($this -> GetConexao()));
      return false;        
    }

    public function SetResult($r){
      if(mysqli_num_rows($r) > 0) {
        $this -> result = array();
        while($linha = mysqli_fetch_array($r,MYSQLI_ASSOC)) {
          array_push($this -> result,$linha);
        }
      } else {
        $this -> result = null;
      }
    }
  }
?>
Arquivo: Repositorio.php
require("banco.php");
require("usuario.php");

class RepositorioUsuario{
  private $banco;
  private $erro;

  public function RepositorioUsuario(){
    $this -> banco = new Banco();
  }
    
  public function SetErro($msg) {
    $this -> erro = "Ocorreu um erro no sitema :".$msg;
  }

  public function GetErro() {
    return $this -> erro;
  }

// Usuário
  public function ChecaUsuario($u) {
    $sql = "SELECT * FROM CLIENTES WHERE LOGIN = '".$u->GetLogin()."' AND SENHA ='".$u->GetSenha()."'";
    if (!$this -> banco -> SelectSQL($sql)) {
      $msg = "Erro de login: ".$this -> banco -> GetErro();
      $this -> SetErro($msg);
      return false;
    }
    if ($this -> banco -> GetResult() == null) {
      return false;
    } else {
      $usuario = new Usuario($linha['COD_CLI'],$linha['LOGIN'],$linha['SENHA'],
                                             $linha['NOME'],$linha['SOBRENOME'],$linha['EMAIL']);
    }
    return true;
  }

... [Outras funções de SQL] ...

  public function AtualizaUsuario($u) {
    $sql = "UPDATE CLIENTES SET LOGIN = '".$u->GetLogin()."' ";
    $sql.= ",NOME = '".$u->GetNome()."',SOBRENOME = '".$u->GetSobrenome()."' ";
    $sql.= "WHERE COD_CLI ='".$u->GetCodigo()."'";
    if (!$this -> banco -> InsertSQL($sql)) {
      $this -> SetErro($this -> banco -> GetErro());
      return false;
    }
    return true;
  }
... [Outras funções de SQL] ...
}
?>
MSSQL Arquivo: Banco.php
<?php
  class Banco {
    var $server;
    var $bd;
    var $user;
    var $password;
    var $erro;
    var $result;
    var $conexao;
    function Banco ($u="",$s="",$b="projetophp",$serve="localhost") {
      if(!$this -> SetConexao($serve,$u,$s)) {
        $this -> SetErro("Erro de Conexão - ".mssql_get_last_message($this -> GetConexao()));
        return false;
      }
      if(!$this -> SetBd($b)) {
        $this -> SetErro("Banco não Encontrado - ".mssql_get_last_message($this -> GetConexao()));
        return false;
      }
    }

... [Outros Getters e Setters] ...

    function SetConexao ($s,$u,$p){
      if($this -> conexao = mssql_connect($s,$u,$p)) {
        return true;
      }
      return false;
    }

    function SetBd ($bd) {
      $this -> bd = $bd;
      if(mssql_select_db($bd,$this -> GetConexao())) {
        return true;
      }
      return false;
    }

    function ExecSQL($sql) {
      if(mssql_query($sql,$this -> GetConexao())) {
        return true;
      }
      $this -> SetErro("Query Inválida - ".mssql_get_last_message($this -> GetConexao()));
      return false;
    }

    function SelectSQL($sql) {
      if($result = mssql_query($sql,$this -> GetConexao())) {
        $this -> SetResult($result);
        return true;
      }
      $this -> SetErro("Query Inválida - ".mssql_get_last_message($this -> GetConexao()));
      return false;
    }

    function InsertSQL($sql) {
      if (mssql_query($sql,$this -> GetConexao())) {
        return true;
      }
      $this -> SetErro("Query Invalida - ".mssql_get_last_message($this -> GetConexao()));
      return false;        
    }

    function SetResult($r){
      if(mssql_num_rows($r) > 0) {
        $this -> result = array();
        while($linha = mssql_fetch_array($r,MSSQL_ASSOC)) {
          array_push($this -> result,$linha);
        }
      } else {
        $this -> result = null;
      }
    }
  }
?>
Arquivo: Repositorio.php
<?php
require("banco.php");
require("usuario.php");

class RepositorioUsuario {
  var $banco;
  var $erro;

  function RepositorioUsuario(){
    $this -> banco = new Banco();
  }
    
  function SetErro($msg) {
    $this -> erro = "Ocorreu um erro no sitema :".$msg;
  }

  function GetErro() {
    return $this -> erro;
  }

// Usuário 
  function ChecaUsuario($u) {
    $sql = "SELECT NOME, U_SENHAWEB, NOMEALT, RETORNO FROM CFGUSR ";
    $sql.= "WHERE (NOME = '".$u->GetNome()."') AND (U_SENHAWEB = '".$u->GetSenha()."')";
    if (!$this -> banco -> SelectSQL($sql)) {
      $msg = "Erro de login: ".$this -> banco -> GetErro();
      $this -> SetErro($msg);
      return false;
    }
    if ($this -> banco -> GetResult() == null) {
      return false;
    } else {
      $usuario = new Usuario($linha['NOME'],$linha['SENHA'],$linha['NOMEALT'],$linha['RETORNO']);
    }
    return true;
  }

  function SetIdenttity($tabela, $tipo) {
    $sql = "SET IDENTITY_INSERT ".$tabela." ".$tipo;
    $this -> banco -> ExecSQL($sql);
  }

  function InserirRAT($r) {
    $sql = "INSERT INTO DOCPLA(CODDOC, ARQUIVO, CODEMP, CODPLA, ";
    $sql.= "CODSET, DESCRICAO) VALUES(".$r->GetPCodigo().",'";
    $sql.= ".$r->GetPArquivo()."',".$r->GetPCodEmp().",".$r->GetPCodPla().";
    $sql.= ",".$r->GetPCodSet().",'".$r->GetPDescricao()."';
    if (!$this -> banco -> InsertSQL($sql)) {
      $this -> SetErro($this -> banco -> GetErro());
      return false;
    }
    return true;
  }
}
?>

Pretendo até unificar todas as conexões em um unico arquivo separando os comandos pelo CASE "Banco" ou IF "BANCO"

Se alguém se interesar pelos arquivos prontos posso disponibilizar.

Muito Obrigado pela atenção de todos

Editado por RValentim
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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,3k
    • Posts
      652,5k
×
×
  • Criar Novo...