Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bru_ce

Juntar duas Consultas de bancos diferentes

Recommended Posts

Boa Tarde,

Estou inserindo em um combobox todas as tabelas do meu Banco de Dados, só que eu precisava mostrar neste mesmo combobox mais 5 tabelas que estão em outro banco de dados, estou fazendo assim no momento e gostaria de pegar as outras tabelas de outro banco, alguma solução ?

 

 

Grato,

 

 

<select name="projeto" id="projeto">
<option value="" selected="selected">Selecione</option>
<?php
include('conexao.php'):
 
$consulta = mysql_query("SHOW TABLES");
while($dados = mysql_fetch_array($consulta)){ ?>
<option value="<?php echo $dados[0]; ?>"><?php echo $dados[0]; ?></option>
<?php }?>
</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça mais uma conexão e jogue o resultado depois do primeiro while.

Compartilhar este post


Link para o post
Compartilhar em outros sites

adicione a outra conexão no seu include.

 

 

$db2 = mysql_connect('localhost','user','pass');
mysql_select_db('outro_banco');

 

 

ai no outro arquivo mude qual banco vc esta usando:

 

 

function optionDoBanco($db){
    $sql = 'SHOW TABLES';
    $consulta = mysql_query($sql, $db) or die(mysql_error());
    while($dados = mysql_fetch_array($consulta)){
        echo '<option value="'. $dados[0] .'">'. $dados[0] .'</option>';
    }
}
 
 
 
//ai no seu html
 
<select name="tabela">
<?php
   include('conexao.php');
   optionDoBanco($db1) ;
   optionDoBanco($db2);
?>
</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Shini, deixei assim e não funfou cara ..

 

 

 

<?php
include('conexao.php');
 
function optionDoBanco($db){
    $consulta = mysql_query("SHOW TABLES", $db);
    while($dados = mysql_fetch_array($consulta)){
        echo   '<option value="$dados[0]">$dados[0]</option>';
    }
}
 
 
?>
<select name="projeto" id="projeto">
<option value="" selected="selected">Selecione</option>
<?php
   optionDoBanco($db1) ;
   optionDoBanco($db2);
?>
</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu editei o post #4, olha ele novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ja havia concatenado, mesmo assim ele só puxa as tabelas de um banco só.



Agora foi amigo, resolvido.

 

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

com ASC pelo banco não da pq são 2 consulta, fiz uma implementação em php(não sei se é a melhor) mas vai ai.

 

 

function getTabelas($db){
    $sql = 'SHOW TABLES';
    $res = mysql_query($sql, $db) or die(mysql_error());

    $lista = array();
    while($item = mysql_fetch_array($res)){
        $lista[] = $item[0];
    }

    return $lista;
}

function gerarOptions($options){
    foreach($options as $item){
        echo '<option value="'. $item.'">'. $item .'</option>';
    }
}

 

 

chamada:

 

<select name="projeto" id="projeto">
    <option value="" selected="selected">Selecione</option>
    <?php
        $t1 = getTabelas($db1);
        $t2 = getTabelas($db2);
        $novo = array_merge($t1,$t2);
        sort($novo);
        gerarOptions($novo);
   ?>
</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

a minha conexão ficou assim

 

 

$db1 = mysql_connect('localhost','root','root');
mysql_select_db('test', $db1);

$db2 = mysql_connect('127.0.0.1','root','root');
mysql_select_db('receitas', $db2);

 

 

uma hora tbm so listava as tabelas de uma banco, quando mudei o codigo para o de cima funcionou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficou assim então, porém não funcionou .. ele continua pegando apenas um banco de dados.

 

 

<?php
$db1 = mysql_connect('localhost','root','123');
mysql_select_db('teste1', $db1);
 
$db2 = mysql_connect('localhost','root','123');
mysql_select_db('teste2', $db2);
 
$t1 = getTabelas($db1);
$t2 = getTabelas($db2);
$novo = array_merge($t1,$t2);
sort($novo);
gerarOptions($novo);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

então isso q achei estranho, parece q é uma conexão. qunado vc deixa assim:

 

 

$db1 = mysql_connect('localhost','root','123');
mysql_select_db('teste1', $db1);
db2 = mysql_connect('localhost','root','123');
mysql_select_db('teste2', $db2);
var_dump($db1);
var_dump($db2);

 

retorno:

resource(3) of type (mysql link)

resource(3) of type (mysql link)

 

O.o

 

 

deixe um como local host e outro coloque o ip.

 

$db1 = mysql_connect('localhost','root','123');
mysql_select_db('teste1', $db1);
db2 = mysql_connect('127.0.0.1','root','123');
mysql_select_db('teste2', $db2);
var_dump($db1);
var_dump($db2);

 

resultado:

resource(3) of type (mysql link)

resource(5) of type (mysql link)

Compartilhar este post


Link para o post
Compartilhar em outros sites

na segunda conexão deixe assim:

 

db2 = mysql_connect('127.0.0.1','root','123', true);

 

second call is made to mysql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned. The new_link parameter modifies this behavior and makes mysql_connect() always open a new link, even if mysql_connect() was called before with the same parameters. In SQL safe mode, this parameter is ignored.

 

http://www.php.net/manual/en/function.mysql-connect.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido Shini, muito bom cara !

Me tira outra dúvida, rs.

Eu faço em cima outro select assim:

 

 

Será que existe a possibilidade de o usuário selecionar um operador e logo abaixo exista essa consulta que você fez para mim porém ele selecione apenas as tabelas onde existe o operador de cima ?

 

 

<select name="operador" id="operador">
<option value="" selected="selected">Selecione</option>
<?php
 
$consulta = mysql_query("SELECT * FROM operadores ORDER BY nome ASC");
 
while($nome = mysql_fetch_array($consulta)){ ?>
<option value="<?php echo $nome['nomeCompleto']; ?>"><?php echo $nome['nome']; ?></option>
<?php }?>
</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

se vc quer pegar as permissões do usuario pelo acho q não da certo pois o usuario do banco sempre é o mesmo(geralmente). no caso vc teria q mapear quem tem acesso a quais tabelas. fiz uma pesquisa não se te ajuda esses links

 

 

http://dba.stackexchange.com/questions/23265/mysql-show-grants-for-all-users
http://alvinalexander.com/blog/post/mysql/show-users-i-ve-created-in-mysql-database
http://dev.mysql.com/doc/refman/5.6/en/grant-table-structure.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não Shini, não seria por usuário.
Pensa assim comigo, tenho várias tabelas e nelas contém os dados normalmente.

 

Porém tem tabela que não contém linhas com os operadores,

 

Vamos supor, selecionei o operador pedro, ele tem registros dele em 3 tabelas e o banco tem 4, então ficaria legal se ao selecionar o operador X ele verifica nas tabelas se existe alguma linha com o registro de um operador ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.