>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Conexão em Bases de Dados separadas PDO


Tenho o seguinte senário para a minha aplicação:

Tenho uma aplicação PHP + MySql, com conexão em PDO, preciso que a aplicação seja compartilhada com todas as empresas cadastradas, porém cada empresa terá sua base de dados separadamente.

<b>ESTRUTURA DA APLICAÇÃO</b>

<b>Conexão:</b>

<b>1</b> - Con.class.php => Responsável pela conexão com o banco usando PDO - SingleTon

<b>2</b> - Config.php => Através de define(); recebe os valores a serem passados para conexão - (Host, User, DB...)


<b>Banco de Dados Central:</b>

<b>3</b> - TABELA Empresas => Recebe as empresas que vão usar a aplicação, contendo as informações de conexão - (Host, User, DB, Senha)


<b>Bancos de Dados do Clientes (db1, bd2, db3.....):</b>

<b>4</b> - TABELA Usuários => Contém as informações dos usuários, inclusive o "ID_EMPRESA" para referenciar a qual empresa o mesmo pertence além das informações de login- (user_login, user_senha, user_email...)


Como eu posso fazer para que cada empresa log na sua base que será criada ao cadastrar as empresas, além de não ter o conhecimento avançado no PHP, não encontrei uma ajuda sobre isso pesquisando.

<b>CÓDIGOS</b>

<b>Con.class.php</b>

<?php

class Conn {

    private static $Host = SIS_DB_HOST;

    private static $User = SIS_DB_USER;

    private static $Pass = SIS_DB_PASS;

    private static $Dbsa = SIS_DB_DBSA;

    private static $Connect = null;

    private static function Conectar() {

        try {

            if (self::$Connect == null):

                $dsn = 'mysql:host=' . self::$Host . ';dbname=' . self::$Dbsa;

                $options = [ PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'];

                self::$Connect = new PDO($dsn, self::$User, self::$Pass, $options);

                self::$Connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            endif;

        } catch (PDOException $e) {

            PHPErro($e->getCode(), $e->getMessage(), $e->getFile(), $e->getLine());

            die;

        }

        return self::$Connect;

    }

    public static function getConn() {

        return self::Conectar();

    }

    private function __construct() {

    }

    private function __clone() {

    }

    private function __wakeup() {

    }

}



<b>Config.php</b>


if ($_SERVER['HTTP_HOST'] == $urlcentral):

    define('HOST', $linkBanco);

    define('USER', $userBanco);

    define('PASS', $senhaBanco);

    define('DBSA', $nomeBanco);

else:

    define('HOST_CLIENTE', $linkBancoCliente);

    define('USER_CLIENTE', $userBancoCliente);

    define('PASS_CLIENTE', $senhaBancoCliente);

    define('DBSA_CLIENTE', $nomeBancoCliente);

endif;



Será que é possível realizar estão ação?

Quando o usuário entrar com o Login e Senha, verificar a qual empresa ele pertence, e levar as informações de conexão do banco de dados e ele ser conectado na base da empresa a qual ele pertence.

Obrigado!