Jump to content
Fórum Script Brasil
  • 0

Problema com classe de conexao


RafaelMCastro

Question

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 to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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.

Edited by Romero Dias
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...