Jump to content
josenilson

Sistema com vários bancos de dados

Recommended Posts

Olá pessoal , 

 

Tenho um sistema no qual quero disponibilizar para varias empresas, porem quero separar os dados criando um banco de dados para cada empresa, mas não sei com fazer essa interação dinamicamente,  eu uso nos meus projetos um arquivo config.inc.php contendo  a conexão e um auto load com as pastas contendo as class. 

 

No primeiro banco de dados  criei os acessos de usurário ligados a sua determinada empresa, ate ai tudo bem , porem uma vez o usuário logado como lido com essa situação, o usuário da empresa X deve gravar e consulte os dados do seu determinado banco e o usuário da empresa Y a mesma coisa . 

 

Minha limitação esta sendo com o arquivo config imaginei de criar um para cada empresa apontando para seu determinado banco mas assim não deu certo . 

Share this post


Link to post
Share on other sites

Primeiro que essa sua ideia de criar um BD para cada cliente seria válido apenas se cada cliente fosse um fork diferente do mesmo projeto, se todos vão usar o mesmo sistema você só vai criar um problema na hora de corrigir/alterar/implementar algo novo no sistema.

 

Se apenas o banco for ter o nome diferente (mesma senha/usuário de acesso ao SGBD para todos), basta colocar isso no BD e no momento que o cara logar você pega essa informação e faz a nova conexão com o BD baseado nisto, pode até guardar em uma sessão se for o caso, se já tentou fazer isso, qual a dificuldade? Está mostrando algum erro?

Share this post


Link to post
Share on other sites
2 minutos atrás, ESerra disse:

Primeiro que essa sua ideia de criar um BD para cada cliente seria válido apenas se cada cliente fosse um fork diferente do mesmo projeto, se todos vão usar o mesmo sistema você só vai criar um problema na hora de corrigir/alterar/implementar algo novo no sistema.

 

Se apenas o banco for ter o nome diferente (mesma senha/usuário de acesso ao SGBD para todos), basta colocar isso no BD e no momento que o cara logar você pega essa informação e faz a nova conexão com o BD baseado nisto, pode até guardar em uma sessão se for o caso, se já tentou fazer isso, qual a dificuldade? Está mostrando algum erro?

 

Obrigado pela ajuda ESerra, então devido a minha limitação quanto a isso eu ainda só estou utilizando um banco de dados para realizar o login no sistema, esse banco eu estava pensando de usar de forma genérica com registros que sirvam para todos os clientes como por exemplo cidade e estados . 

 

Se neste caso  usar somente um banco para todos os clientes como faria a divisão de registros ? 

criaria uma chave estrangeira nas tabelas com o cnpj da empresa ? e assim a partir dessa chave criaria as consultas e cadastros ?  

Share this post


Link to post
Share on other sites
Em 15/06/2018 at 09:09, josenilson disse:

Se neste caso  usar somente um banco para todos os clientes como faria a divisão de registros ? 

criaria uma chave estrangeira nas tabelas com o cnpj da empresa ? e assim a partir dessa chave criaria as consultas e cadastros ?  

 

Sim.

Share this post


Link to post
Share on other sites
Em 19/06/2018 at 10:47, ESerra disse:

 

Sim.

Meu medo é,   quando for opera tratativas particularidades de clientes se der algum problema como por exemplo relatórios, vai dar problema para todos os outros por se tratar da mesma base de dados , mas o que você acha ? posso seguir com esse exemplo da chave estrangeira mesmo ?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Pedro Batista Lopes
      Olá eu estou fazendo um sistema em php com mysql, estou com uma dificuldade se alguém puder me ajudar.
      Esse programa se conecta no banco de dados e recebe uma query, transformo essa query em um json, para jogar no front,
      mais estou com dificuldade no tratamento dessa query.
      segue o codgio.
      <?php $hostname = 'localhost'; $bancodados = 'sistema'; $usuario = 'root'; $senha =''; $conn = new mysqli($hostname,$usuario,$senha,$bancodados); if ($conn->connect_errno) { echo "Falha ao conectar: " . $mysqli->connect_errno; } $result_nota = "select DISTINCT cli.nome, nf.numero_nf, nf.data_em, nf.valor from cliente cli join nota_fiscal nf on cli.id = nf.id_cliente WHERE nf.data_em >= '2019-01-01' and nf.data_em <= '2019-01-30'"; $resultado_nota = mysqli_query($conn,$result_nota); $dado = array(); while ($row_nota = mysqli_fetch_object($resultado_nota)) { array_push($dado, $row_nota); } echo json_encode($dado); O resultado é esse.
      [ { nome: "Pedro", numero_nf: "200", data_em: "2019-01-03", valor: "200" }, { nome: "Paulo", numero_nf: "201", data_em: "2019-01-05", valor: "300" }, Gostaria de incluir embaixo do valor mais um campo com o nome janeiro ai fazer um loop do dia 01/02/2019 a 28/02/2019 e pegar todos o cliente do de fevereiro, e incluir em baixo do valor em cada cliente.
    • By CharlieAldrin
      Estou tentando fazer um chat, e nele é necessário saber se um usuário continua na página do chat, para caso ele saia informar o outro usuário.
      Encontrei em alguns lugares como solução fazer um ajax conferindo se o usuário está "dando sinal de vida" de 10 em 10 segundos (por exemplo), porém não entendi como fazer isso e nem como colocar no código. Alguém pode me ajudar por favor? 
      Ou me informar se existe alguma forma melhor de conferir isso?
       
      Valeu desde já :) 
    • By hlv
      Olá, estou tentando desenvolver um site no wix no qual tenho um banco de dados já preenchido com um código e um arquivo PDF associado. Minha dúvida é como direcionar o usuário ao PDF após ele digitar o código associado?
    • By MateusOFCZ
      Olá, estou desenvolvendo meu TCC no Netbeans usando Java, quando estava fazendo as telas em JFrame, percebi que ele cria uma conexão toda hora que acessa uma tela (http://prntscr.com/op1tjc) fazendo com que "desconecte" o usuário que estava logado, gostaria de saber se tem alguma forma de fazer com que toda vez que troca de tela ele continua com a conexão anterior ao invés de criar uma nova, fazendo com que ele desconecte o usuário que estava logado.

       
       
    • By Ak_Ray
      Olá pessoal, estou com um problema relativamente simples! mas sou novo em banco de dados e php então não consegui resolver. Estou construindo um sistema de registro e login há um certo tempo, meu professor ainda não ensinou e não ensina muito bem então decidi aprender sozinho por tutoriais na internet ._. então achei um tutorial legal, segui todos os passos e está tudo funcionando! porém, agora quero exibir os dados registrados, porém não sei como fazer isso, quero exibir em específico o nome do usuário. Lembrando que sou novo nesse assunto então desconsiderem minha maneira de programar kkk
       
      ================================================================================================================================
      Código php:
      <?php
      class Usuario
      {
          private $pdo;
          public $msgErro = "";
          public function conectar($nome, $host, $usuario, $senha)
          {
              global $pdo;
              global $msgErro;
              try {
              $pdo = new PDO("mysql:dbname=".$nome.";host=".$host,$usuario,$senha);    
              } catch (PDOException $e) {
                  $msgErro = $e->getMessage(); 
              }
          return $conectar;    
          }
          public function cadastrar($nome, $telefone, $email, $senha)
          {
              global $pdo;
              //verificar se já existe email cadastrado 
              $sql = $pdo->prepare("SELECT id_usuario from usuarios where email = :e");
              $sql->bindValue(":e",$email);
              $sql->execute();
              if($sql->rowCount() > 0)
              {
                  return false; // ja esta cadastrado
              }
              else 
              {
                   //caso não, cadastrar 
                   $sql = $pdo->prepare("INSERT INTO usuarios (nome,telefone,email,senha) VALUES (:n, :t, :e, :s)");
                   $sql->bindValue(":n",$nome);
                   $sql->bindValue(":t",$telefone);
                   $sql->bindValue(":e",$email);
                   $sql->bindValue(":s",md5($senha));
                   $sql->execute();
                   return true; 
              }     
              
          }
          public function logar($email, $senha)
          {
              global $pdo;
              //verificar se  o email e senha estao cadastrados, se sim  
              $sql = $pdo->prepare("SELECT id_usuario from usuarios where email = :e and senha = :s");
              $sql->bindValue(":e",$email);
              $sql->bindValue(":s",md5($senha));
              $sql->execute();
              if($sql->rowCount() > 0)
              {
                 //entrar no sistema (sessao)
                 $dado = $sql->fetch();
                 session_start();
                 $_SESSION['id_usuario'] = $dado['id_usuario'];
                 return true; //logado com sucesso 
              }
              else
              {
                 return false;//nao foi possível logar
              }
              //entrar no sistema (sessao)
          }
      }
      ?>
       
      ================================================================================================================================
      Código html:
      <!-- verificação se está logado -->
      <?php 
      session_start(); 
      if(!isset($_SESSION['id_usuario']))

      header("location: index.php"); 
      exit; 
      }
      else{    
          include ('CLASSES/usuarios.php');
          require_once 'CLASSES/usuarios.php';
          $consulta = "SELECT nome from usuarios"; //aqui estava tentando puxar os dados por um tutorial aleaório

      }
      ?> 
      <html lang="pt-br">
      <head>
      <meta charset="utf-8">
      <link rel="stylesheet" href="CSS/estilouser.css" type="text/css" media="screen">
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
      <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> 
      <title> Ak_Ray Projects </title>
      </head> <body bgcolor="#B3D1F7">

      <div class="navbar">
      <a href="#home">Meu</a>
      <a href="#news">Projetos</a>
      <a href="#newss">Novidades</a>
      <a href="sair.php" style="position: relative;left:1020px;">Sair</a>
      <!--<a href="sair.php">Sair</a>-->
      </div>
      <div class="branco"> 
      <h2>
        <center>
         <font color="#20A1C6">
          Criação e Desenvolvimento de Jogos<br>Ak_Ray
         </font>
        </center>
       </h2>
      <div class="titlee">
      <strong>The Amazing word of Bimo</strong>
      <div class="contt">
      <center><img src="IMG/FOTOJOGO.png" width="150" style="border-radius: 20px;"></center>
      <a href=\"bimo.netlify.com\"><img class="animacao" src="IMG/button.png" width="40"></a>
      </div>
      </div><br>
      The Amazing Word of Bimo foi um Jogo criado em 2019, inspirado na franquia de jogos de <strong>Super Mario World.</strong>
      O jogo está em versão de desenvolvimento e está sendo produzido e alterado
      constantemente. 
      </div>
      <?php  echo con;  ?> // exibindo só de teste

      </body></html>
       
      ================================================================================================================================
      Obs caso precisem: 
      nome do banco de dados:  projeto_login
      host: localhost
      usuario: root
      senha: ""
      tabela criada: usuarios
      tutoriais assistidos: 
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.