osk 0 Denunciar post Postado Setembro 8, 2009 Achei este escript feito aqui mesmo. Mas tenho um problema que não estou conseguindo resolver: Quando chamao a consulta o $db já esta definido, como podem ver abaixo. Mas gostaria que em cada pagina de consulta atribuisse um $db diferente e não sempre o mesmo. Pq tenho um banco para cada tipo, como clientes-admin etc. <?php /* * Classe de Conexao com MySQL * ===================== * por Felipe Rezende * ===================== * Descricao: Classe que * que realiza conexao com o banco * de dados. */ // verificacao de seguranca $checkurl = $_SERVER["PHP_SELF"]; if (eregi("includes/mysql.php", "$checkurl")) { header ("Location: ../index.php"); } class MySQL { // edite aqui var $host = "localhost"; var $user = ""; var $pass = ""; var $db = "admin"; // nao edite as vars abaixo var $query; var $link; var $result; /** * @return MySQL * @desc Construtor da classe MySQL. */ function MySQL(){ } /** * @return void * @desc Método que Conecta ao Servidor e seleciona Banco de Dados. */ function connect(){ $this->link = mysql_connect($this->host,$this->user,$this->pass); if(!$this->link){ echo "Erro na Conexão.<br>" ."<b>MySQL retornou: </b> ".mysql_error()."<br>"; die(); } elseif (!mysql_select_db($this->db,$this->link)){ echo "Erro na seleção do Banco de Dados.<br>" ."<b>MySQL retornou: </b> ".mysql_error()."<br>"; die(); } } /** * @return Resultado * @param String $query * @desc Recebe query SQL, executa e retorna resultado, se houver erro retorna 0. */ function sql($query){ $this->connect(); $this->query = $query; if($this->result=mysql_query($this->query)){ $this->disconnect(); return $this->result; } else { die("Ocorreu um erro ao executar a Query SQL abaixo:<br>$query<<br><br><b>MySQL Retornou: ".mysql_error()."<b>"); $this->disconnect(); } } /** * @return mysql_close * @desc Desconecta do servidor */ function disconnect(){ return mysql_close($this->link); } } ?> Aqui e como chamo a função: <?php // Cria Obejto $mySQL = new MySQL(); // Executa uma query $result = $mySQL->sql("SELECT * FROM admin ORDER BY id"); // Exibe informações while ($dados = mysql_fetch_array($result)){ echo " <table width='100%' border='0'> <tr> <td width='120' bgcolor='#F0F0F0'><div align='left'>".$dados['id']."</div></td> <td width='180' bgcolor='#F0F0F0'><div align='left'>".$dados['login']."</div></td> <td width='200' bgcolor='#F0F0F0'><div align='left'>".$dados['senha']."</div></td> <td bgcolor='#F0F0F0'><div align='left' >".$dados['email']."</div></td> </tr> </table> "; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
IceCOld 1 Denunciar post Postado Setembro 8, 2009 com quantos bancos de dados diferentes você pretende trabalhar em uma aplicação? Compartilhar este post Link para o post Compartilhar em outros sites
osk 0 Denunciar post Postado Setembro 8, 2009 com quantos bancos de dados diferentes você pretende trabalhar em uma aplicação? Na verdade um por vez. Pq so quero que mostre os clientes, ou admins, ou produtos individual. Compartilhar este post Link para o post Compartilhar em outros sites
IceCOld 1 Denunciar post Postado Setembro 8, 2009 intão não precisa ficar alterando o $db, defina ele com o nome do banco de dados.. depois coloque na sua consulta SQL as tabelas que deseja consultar.. EX. <?php // Cria Obejto $mySQL = new MySQL(); // Executa uma query $result = $mySQL->sql("SELECT * FROM admin, clientes, produtos ORDER BY id"); // Exibe informações while ($dados = mysql_fetch_array($result)){ echo " <table width='100%' border='0'> <tr> <td width='120' bgcolor='#F0F0F0'><div align='left'>".$dados['id']."</div></td> <td width='180' bgcolor='#F0F0F0'><div align='left'>".$dados['login']."</div></td> <td width='200' bgcolor='#F0F0F0'><div align='left'>".$dados['senha']."</div></td> <td bgcolor='#F0F0F0'><div align='left' >".$dados['email']."</div></td> </tr> </table> "; } ?> Ou caso você queira exibir o dado de uma ou de outra tabela individualmente, você pode colocar radio button com a tabela para que possa ser escolhida antes da consulta... Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Setembro 8, 2009 Pq so quero que mostre os clientes, ou admins, ou produtos individual. Tente fazer um registro dos objetos dos bancos: if ( !Registry::isRegistered( 'dbcli' ) ){ $dbcli = new MySQL(); $dbcli->host = 'host_de_clientes'; $dbcli->user = 'usuario'; $dbcli->pass = 'senha'; $dbcli->db = 'admin'; $dbcli->connect(); //Você pode conectar aqui ou só na hora que precisar... Registry::register( 'dbcli' , $dbcli ); } if ( !Registry::isRegistered( 'dbadm' ) ){ $dbadm = new MySQL(); $dbadm->host = 'host_de_adms'; $dbadm->user = 'usuario'; $dbadm->pass = 'senha'; $dbadm->db = 'admin'; $dbadm->connect(); //Você pode conectar aqui ou só na hora que precisar... Registry::register( 'dbcli' , $dbadm ); } if ( !Registry::isRegistered( 'dbpro' ) ){ $dbpro = new MySQL(); $dbpro->host = 'host_de_produtos'; $dbpro->user = 'usuario'; $dbpro->pass = 'senha'; $dbpro->db = 'admin'; $dbpro->connect(); //Você pode conectar aqui ou só na hora que precisar... Registry::register( 'dbcli' , $dbpro ); } Ai quando você precisar é só pegar o objeto adequado: if ( Registry::isRegistered( 'dbadm' ) ){ $result = Registry::get( 'dbadm' )->sql("SELECT * FROM admin ORDER BY id"); // Exibe informações while ($dados = mysql_fetch_array($result)){ //.. } } Registry Compartilhar este post Link para o post Compartilhar em outros sites
osk 0 Denunciar post Postado Setembro 8, 2009 Ice aju que não consegui explicar direito vou tentar dnv: Aqui nesta linha: } elseif (!mysql_select_db($this->db,$this->link)){ o var $db esta definido como hostmons_admin certo. E dentro deste tem admin. Mas em outra consulta eu quero q seja como hostmons_clientes. E dentro deste tem clientes. Ou seja são banco de dados diferentes. Vou postar a foto: Compartilhar este post Link para o post Compartilhar em outros sites
osk 0 Denunciar post Postado Setembro 8, 2009 A legal João vou testar aqui. Compartilhar este post Link para o post Compartilhar em outros sites
osk 0 Denunciar post Postado Setembro 8, 2009 Demorou um pouco mas consegui entender tudo. João funcionou perfeitamente cara parábens pela class. VLW. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
IceCOld 1 Denunciar post Postado Setembro 8, 2009 sei que ele ja conseguiu a resposta mas eu fiquei com uma duvida.. hostmons é um DB.. e _admin, _cliente e _suporte são tabelas certo? se for isso pq definir a var $db como hostmons_admin e não só hostmons? sou iniciante em PHP, e gostaria de aprender mais.. a dica que eu dei for por conhecimento em outras linguagens.. imiginei uma conexão com o DB hostmons e depois o select da tabela (_admins, _suporte..) via codigo SQL não funciona assim?? Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Setembro 8, 2009 imiginei uma conexão com o DB hostmons e depois o select da tabela (_admins, _suporte..) via codigo SQL não funciona assim?? Bom, segundo @osk: Ou seja são banco de dados diferentes. Se o host for o mesmo e ele tiver vários bancos de dados, então ele pode simplesmente fazer uma conexão ao host e identificar a base que ele precisa: select `usuario` from `_admin`.`usuarios`; select `nome` from `_clientes`.`clientes`; select `atendente` from `suporte`.`atendentes`; Porém, para isso funcionar, o host para todos os 3 bancos de dados deve ser o mesmo. Compartilhar este post Link para o post Compartilhar em outros sites