Jump to content


Photo

Acontecimento Sobrenatural Heeheheh


  • Faça o login para participar
9 replies to this topic

#1 ricardolapa

ricardolapa

    Turista

  • Usuários
  • 33 posts
  • Sexo:Não informado

Posted 20/07/2005, 16:17

Galera, estou fazendo um CMS, e ele possui uma classe so para o gerenciamento do banco de dados, como funcoes pra criar, deletar, usar tabela, conectar, usar db, etc...

Porem, algo esta acontecendo que nao quer selecionar o banco de dados de jeito nenhumm, conecta, mas nao seleciona... muito estranho !!!...

Bom aqui é a página que manda conectar, e selecionar o banco (logar.php)

Posted Image
como podem ver está apenas chamando as funcoes da classe pelo objeto $BD...

os objetos estao criados nesta pagina:
Posted Image

a página de classes do mysql:
Posted Image
O erro está acontecendo na classe SelecionaBd() ... ao tentar selecionar o banco está retornando falso...

Para provar que o banco está lá:
Posted Image
ela não está com o + porque não possui tabelas dentro dela... mas tmb ja testei com os outros banco de dados que possuo e nada!

Por favor me ajudem to preso nesse negoco aqui!! Obrigado !

#2 fly2k

fly2k

    Super Veterano

  • Usuários
  • 2262 posts
  • Sexo:Não informado

Posted 20/07/2005, 16:30

coloque um die(mysql_error()) APÓS O MYSQL_SELECT_DB
Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.

#3 ricardolapa

ricardolapa

    Turista

  • Usuários
  • 33 posts
  • Sexo:Não informado

Posted 20/07/2005, 16:44

coloque um die(mysql_error()) APÓS O MYSQL_SELECT_DB

function ConectaBd(){
  if (!isset($this->local) || !isset($this->user) || !isset($this->senha)) {
 	 $this->BancoDeDados();
  }
  $this->assoc = mysql_connect($this->local, $this->user, $this->senha);
  mysql_select_db($this->bd, $this->assoc);
   	 if (!$this->assoc) {
 	 return false;
   	 }
  else {
 	 return $this->assoc;
  }
	}
a solucao foi fazer isso, estragou com minha brincadeira =(

Edição feita por: ricardolapa, 20/07/2005, 16:44.


#4 fly2k

fly2k

    Super Veterano

  • Usuários
  • 2262 posts
  • Sexo:Não informado

Posted 20/07/2005, 16:50

é, até tem lógica... ele tenta passar uma cópia a uma variável...só que é uma cópia de recurso....

o que você poderia fazer é passar por referêcnia.

subistituir isso no código anterior:
$this->assoc = $link;

por:
$this->assoc = & $link;
Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.

#5 ricardolapa

ricardolapa

    Turista

  • Usuários
  • 33 posts
  • Sexo:Não informado

Posted 20/07/2005, 16:56

é, até tem lógica... ele tenta passar uma cópia a uma variável...só que é uma cópia de recurso....

o que você poderia fazer é passar por referêcnia.

subistituir isso no código anterior:
$this->assoc = $link;

por:
$this->assoc = & $link;

o q o & inflinge nisso ?

(inflingi? hehaeauha, i hate portuguese)IOsAHEAOI

#6 fly2k

fly2k

    Super Veterano

  • Usuários
  • 2262 posts
  • Sexo:Não informado

Posted 20/07/2005, 16:57

http://www.php.net/m....references.php
Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.

#7 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 20/07/2005, 16:58

Aqui funcionou perfeitamente:

<?
class BancoDeDados {
var $bd;
var $local;
var $user;
var $senha;
var $assoc;

function BancoDeDados() {
  $this->local = "localhost";
  $this->user = "root";
  $this->senha = "";
  $this->bd = "banco";
}

function ConectaBD() {
  if (!isset($this->local) || !isset($this->user) || !isset($this->senha)) {
  $this->BancoDeDados();
  }

  if ($link = mysql_pconnect($this->local, $this->user, $this->senha)) {
  $this->assoc = $link;
  }
  return $link;
}

function SelecionaBD() {
  return mysql_select_db($this->bd, $this->assoc);
}
}

$BD = new BancoDeDados();

if (!$BD->ConectaBD()) {
echo "não conectou";
}

if (!$BD->SelecionaBD()) {
echo "não selecionou";
}
?>


A não ser que tenha algum erro no código que eu deixei passar.
------
Mero mortal!

#8 ricardolapa

ricardolapa

    Turista

  • Usuários
  • 33 posts
  • Sexo:Não informado

Posted 20/07/2005, 17:07

//Função para conectar no Banco de Dados
	function ConectaBd(){
  if (!isset($this->local) || !isset($this->user) || !isset($this->senha)) {
 	 $this->BancoDeDados();
  }
  $link = mysql_pconnect($this->local, $this->user, $this->senha);
   	 if (!$link) {
 	 return false;
   	 }
  else {
 	 $this->assoc = & $link;
 	 return $link;
  }
	}
	//Função para selecionar o Banco de Dados
	function SelecionaBd() {
  if (!$this->ConectaBd()) {
 	 $this->ConectaBd();
  }
  return mysql_select_db($this->bd, $this->assoc);
	}
Funcionou perfeitamente!
Talvez o erro foi usar mysql_connect ao inves de pconnect, entao nesta troca de funcoes de conexao perdeuse o link... ou sei la...

#9 fly2k

fly2k

    Super Veterano

  • Usuários
  • 2262 posts
  • Sexo:Não informado

Posted 20/07/2005, 17:18

é o & q eu falei!
Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.

#10 ricardolapa

ricardolapa

    Turista

  • Usuários
  • 33 posts
  • Sexo:Não informado

Posted 20/07/2005, 18:10

é o & q eu falei!

depois dessas mudancas sem & tmb funfou ! ;)




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq