Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com classe de conexao


RafaelMCastro

Pergunta

Olá. Já pesquisei em N lugares. Já testei no servidor web local e remoto. Já pesquisei no fórum, vários fóruns.

Deixe-me mostrar minha dúvida

Tenho uma classe de conexao com banco de dados.

// conecta_banco.class.php

<?php

class Banco

{

private $banco;

private $host = "localhost";

private $usuario = "usuario";

private $senha = "senha";

private $db = "bancoDeDados";

private $conex;

public function __construct()

{

$this->conex = mysql_connect($this->host, $this->usuario, $this->senha) or die (mysql_error());

mysql_select_db($this->db,$this->conex);

}

public function __destruct()

{

mysql_close($this->conex);

}

public function teste($sql)

{

return $sql;

}

}

?>

// e a index.php

<?php

include_once 'conecta_banco.class.php';

$sql = 'SELECT * FROM clientes';

$banco2 = new Banco();

$banco2->teste($sql);

?>

O resultado na tela é sempre em branco. Porque? O que está acontecendo?

Abraço

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Rafael,

você está acessando o método teste() de sua classe Banco. Este método não possui implementação. Então, realmente não vai executar nada!

Faça o seguinte.

Implemente isso em seu método. Seu método teste() deve retornar um array contendo os dados do banco.

public function teste($sql) {
  $query = @mysql_query($sql,$this->conex) or die(mysql_get_last_message() . error_get_last());


  $arrReturn = array(); 

  if (mysql_num_rows($query)) {
     while($dados =mysql_fetch_array($query,true)) {
     $arrReturn[] = $dados;
     }
 }

  return $arrReturn;
}

Faça um teste. Estou sem apache aqui e não tive a oportundiade de testar.

Abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

Romero, olá...

Obrigado pela ajuda.

Também não funcionou. Continuei então as minhas pesquisas e consegui ler os dados dentro de uma tabela. Veja o código

// index.php

<?php    
    include_once "conecta_banco.class.php";
    $sql = "SELECT * FROM clientes";
    
    $banco = new Banco();
    $banco->contar($sql);
?>
// conecta_banco.class.php
<?php
    class Banco
    {
        public $host    = "localhost";
        public $usuario = "root";
        public $senha   = "root";
        public $db      = "bancoDeDados";
        public $conex;
        
        public function __construct()
        {
            $this->conex = mysql_connect($this->host, $this->usuario, $this->senha) or die (mysql_error());
            mysql_select_db($this->db,$this->conex) or die (mysql_error());
        }        
        
        public function __destruct()
        {
            mysql_close($this->conex);
        }
        

        public function contar($sql)
        {
            $query = mysql_query($sql);
            $conta = mysql_num_rows($query);
            echo $conta;
        }
        
        
        public function listar($sql)
        {
            $query = mysql_query($sql);
            while ($show = mysql_fetch_object($query))
            {
                echo $show->nome;
                echo "<br>";
            }
        }    
}
?>

Agora está funcionando, mas tenho uma pergunta:

Nas functions contar ou listar, só consigo exibir os dados quanto dou o comando "echo". Se eu dou o comando "return" a tela volta a ficar em branco...

Abraço e obrigado mais uma vez...

Link para o comentário
Compartilhar em outros sites

  • 0

Rafael,

Certamente, na maioria das vezes, um método retorna alguma coisa e você tem que saber o que fazer com este retorno.

Segue abaixo um exemplo que preparei para você.

class Carro {
    /* Método para retornar um array de carros */
    public function listarCarros() {
        $arrCarros = array(
            'Corsa', 'Celta', 'Vectra'
        );
        return $arrCarros;
    }

}

/* Inicializa um array que receberá uma lista de carros*/
$arrayDeCarros = array();

/* Cria um objeto do tipo Carro*/
$carro = new Carro();

/* Aqui você pega o retorno do método listarCarros() e atribui este retorno ao array $arrayDeCarros*/
$arrayDeCarros = $carro->listarCarros();

/* Daqui para frente você faz o que bem entender com o array $arrayDeCarros
 * Por exermplo, irei imprimir este array na tela
 */
echo '<pre>';
print_r($arrayDeCarros);
echo '</pre>';

Qualquer dúvida estamos ai!

Te aconcelho a pesquisar sobre orientação à objetos em PHP, vai ter dar uma visão do funcionamento.

Editado por Romero Dias
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...