Como mudar e manter uma conexao ativa usando sc_change_connection

Prezados,

Nao posso me dizer um excelente conhecedor de PHP, mas meu uso com o programa me permitiu contornar varias situações que anteriormente dependeria de terceiros.

Tenho agora um projeto próprio, que desejo publicar e a ideia é simples assim:

Similar a uma loja virtual, cujo codigo PHP seria unico, teria que usar varios bancos de dados onde cada um seria de um projeto e/ou cliente;

Desta forma (ainda em testes de producao) criei um seletor para qual banco quero ir e a necessidade é entao fazer a troca da conexao para aquele local.

Ocorre que a macro sc_change_connection (pois nao tem muitos detalhes no help) me induz a crer que posso utilizá-la do banco ZERO para o banco UM, DOIS, TRES, etc numa simples passagem de parametros e que isto reflete a partir da aplicacao seguinte, que no caso seria o LOGIN.

Desta forma publiquei todo o projeto como conexao ao banco ZERO (raiz) e os demais (que sao espelhos deste em estrutura), têm que ser acessados automaticamente apos a escolha do usuario na tela inicial.

Só que nao funciona…ele se perde e sempre “fixa” a coisa querendo ler o banco que foi feita a publicacao.

Dai como alternativa rapida para contornar isto, me vi obrigado a publicar 6 vezes o projeto (cada um numa sub-pasta no wwwroot) para entao ele entender que é ali que vai trabalhar.

Pergunto se alguem tem/usou/conhece melhor esta macro ou possa sugerir uma outra alternativa, pois pretendo que tenha mais de 20 bancos porem todos num unico codigo que será facil/rapido controlar a publicacao e implemento.

Grato desde ja e no aguardo, onde abaixo coloco o codigo que usei.

Att,

Emerson.

====
Para funcionar, criei um blank e nele coloquei o seguinte codigo:

// Coloco em variavel global o nome da conexao ao qual terá que ser redirecionado
// O banco principal é: conn_mysql
// Os demais seriam: conn_banco1, conn_banco2, etc…

// Muda a conexao de acordo com a loja selecionada

$conn_ini = “conn_mysql”;

if ( [var_global_conn_act] == 1 ) // Abre conexao do projeto selecionado e avança para login ja naquele banco
{
sc_change_connection( $conn_ini, [var_global_conn_nom] );

// Garante que seja reletido na aplicacao seguinte

   sc_redir( login );

}
else // Retorna conexao inicial e retorna ao seletor principal
{
sc_change_connection( [var_global_conn_nom], $conn_ini );

   sc_redir( sel_prj );

}

// End

Eu utilizo sem problemas.

Na url: http://cominio.com/sistema/login/login.php?conexao=1

No login, onscriptinit:

sc_change_connection( conexao inical, [conexao] );

Haroldo,

Agradeço pelo retorno, contudo pergunto como no proprio Login (aplicacao ja em uso) sera assumida uma nova conexao ?

Havia entendido que ele leria a partir da proxima e dai que meu Login entra, até pq sao usuarios e senhas diferentes.

Sabe me dizer em qual versao da aplicacao isto funciona ?, embora tenha todas elas disponiveis.

Grato e no aguardo.

Att,

Emerson

Funicioma desde a versao 4.

Uma aplicação sc na verdade são muitos scrpts.

Bom dia amigo, no sistemas que eu dou manutenção essa função funciona corretamente, mas tentei usa-la em outra aplicação e não tive exito.

segue o código funcionando corretamente:

if ([cliid] == ‘cliente1’)
{
[conect] = ‘conn_cliente1’;

}

if ([cliid] == ‘cliente2’)
{
[conect] = ‘conn_cliente2’;

}

sc_reset_change_connection();

sc_change_connection (“conn_app”, [conect]);

Estou usando esse código no OnapplicationInit, em um formulário de controle.

Uso também sem problema, no meu esquema eu direciono pelo subdominio, crio as conexões nomeadas de acordo com o subdomínio e pronto, uso a macro pra alterar a conexão.