Configurar conexão ao DB em tempo de execução

Preciso configurar uma conexão de db para o resto de minha aplicação logo após o Login. Como eu faço isto?

Ambientando melhor pra que alguém responda à minha dúvida:

Eu tenho várias bases de dados disponíveis para meus clientes. (algo em torno de 100 e aumentando…)

A principio não sei o nome de nenhuma delas, pois as mesmas serão criadas pelo clientes em algum momento.
Motivo pelo qual não posso simplesmente adicioná-las no ambiente de produção

Eu tenho um lugar onde é salvo o lugar, o banco de dados, o login e a senha do cliente.
Basta isso para que use a minha aplicação (comum para todos) para individualmente para cada cliente, ja que cada um terá sua base de dados.

[b]Então o que eu quero é:

  • Logo após o login, buscar o nome do banco de dados e criar, para as minhas aplicações, uma conexão com o servidor, para que elas o utilizem.
    [/b]

Por um acaso é mexendo com essas variáveis aqui ?
sc_db_master_usr - Informa o login do usuário a ser utilizado.
sc_db_master_pass - Informa a senha a ser utilizada.
sc_db_master_cript

Se sim, qual a forma correta de utilizá-las ? Incluindo a configuração na tela da aplicação!!

Seria muito interessante se tivesse uma macro que criasse uma nova conexão baseada em parametros.
Após a criação desta conexão poderíamos simplesmente utilizar as variáveis de sessão para sua utilização.

Obrigado

A principio não sei se tem uma forma de conexão dinamica, talvez se pesquisar todas as variaveis em sesssão(globais) encontre as que são responsaveis pela conexão, mas não entendi uma coisa, o cliente cria a base em tempo de excução? essa base tem que ter sempre a mesma estrutura não?

Pq não usar uma base só, e incluir uma chave em todas as tabelas? O cliente que se logar, tera acesso apenas aos registros cuja a chave é a autenticaçào dele.

Ambientando:

  • Na minha aplicação um Cliente (com várias filiais) contrata meus serviçõs.
    Cada filial dele no momento de seu registro no meu sistema, terá uma base de dados (com toda estrutura e primeiros dados) criada.

Eu não posso colocar uma chave para identificar qual empresa pertence os dados, pois imagina colocar isso numa base que tem ± 30 tabelas com 200 entidades. Imagina os erros e falhas de segurança a que os meus clientes poderiam ser expostos. Sem contar na hora do backup e do volume de dados. (2Gigas ao ano por filial)


O negócio é realmente separar tudo isso por contexto, ou seja, conexão!

Caro Amigo

Acredito que neste seu caso , pelo que vejo voce tera que duplicar todas as aplicações criando uma pasta para cada cliente ou filial, e para cada uma uma conexao diferente, voce mesmo.

Abracos
marcio oliveira

Você solicitou um suporte a Netmake? O que eles dizem?
Notei que existem variáveis globais que guardam os dados dessa conexão, você pode fazer uma conexão persistente usando o php( na oninit de cada aplicação, ou numa biblioteca, e alterar os valores dessas váriaveis, talvez isso funcione, mas seria preciso testar.

Se resolver, publique aqui como conseguiu.

Haroldo Passos

tb tenho uma estrutura parecida . preciso criar a base em tempo real , copiar a aplicação e editar a conexao de forma automatica…
cada cliente tem um database para separar.

use: sc_connection_new dê o nome da conexão
http://www.scriptcase.com.br/aprendizagem/documentacao/pt_br/v9/manual/14-macros/01-visao-geral/#sc_connection_new
sc_connection_new (“Nome_da_Conexão”, $arr_conn) -> Esta macro permite a criação de novas conexões dinamicamente.
Depois faça o controle com as macros de SQL e não esqueça de colocar o nome da conexão para cada aplicação que entrar.