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

Php não reconhece objeto


nsouza

Pergunta

Colegas,

estou lendo um livro e estudando OOP, tenho fazer alguns exercicios e tem dado certo, mas as vezes eu tenho fazer de outro jeito e não funciona. Um exemplo é esse:

- Estou usando a biblioteca do php5 PDO o código abaixo funciona e retorna os registros corretamente:

<?php              
$conn = new PDO('pgsql:dbname=bd_atelie; user=postgres; password=pglocal; host=localhost; port=5432');
$sql = "select * from tbl_categoria";
$result = $conn->query($sql);
while($row = $result->Fetch(PDO::FETCH_OBJ)){
    echo $row->cat_codigo . '_' .
         $row->cat_descricao . "<br>\n";
}             

?>
O resultado funciona perfeitamente: 5_Geral 12_Saias 26_manga 13_Vestidos 11_Calças cumpridas 30_Paletós Mas eu estou usando uma classe em um arquivo chamado Categoria.class.php abaixo o codigo dela:
<?php class categoria{ public $id; public $descricao; public $opr; var $enviar; var $rs; function __construct() { try { // Conexao com banco Postgres $conn = new PDO('pgsql:dbname=bd_atelie; user=postgres; password=pglocal; host=localhost; port=5432'); } catch ( PDOException $e ) { // Caso ocorra uma exceção, exibe na tela echo $e->getMessage(); } } function setDescricao($descricao){ $this->descricao = $descricao; } function listar(){ $sql = "select * from tbl_categoria"; $result = $conn->query($sql); } function getDescricao(){ $sql = "SELECT * FROM tbl_categoria"; $resultado = pg_query($sql); //echo "$coluna[cat_descricao]<br>"; while ($coluna = pg_fetch_array($resultado)){ echo "$coluna[cat_descricao]<br>"; } } function inserir(){ $sql = "SELECT iae_categoria($this->id,'$this->descricao','$this->opr')"; pg_query($sql) or die ("não foi possível inserir dados"); echo ($sql); print "&lt;script type = 'text/javascript'> location.href = 'principal.php?link=2'</script>"; } } ?>
Meu problema é que quanto estancio o objeto no meu arquivo de teste teste3.php da a mensagem de erro: Fatal error: Call to a member function Fetch() on a non-object in C:\xampp\htdocs\mfashion\admin\teste3.php on line 6 No arquivo teste3.php estanciei desta forma, porque este resultado irão aparecer numa lista feita em html:
<?php
 include '../classes/Categoria.class.php';
 $categoria = new categoria();
while($row = $result->Fetch(PDO::FETCH_OBJ)){
    echo $row->cat_codigo . '_' .
         $row->cat_descricao . "<br>\n";
}
?>

Desculpem o código grande, mas poderiam me ajudar neste problema que estou agarrado desde o final da semana passada?

Obrigado desde já!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Brother,

Tá tudo sem pé e sem cabeça...

Vamos reformular

<?php
class Categoria
{
    private $conn;

    public function __construct() 
    {
        $this->conn = new PDO('pgsql:dbname=bd_atelie; user=postgres; password=pglocal; host=localhost; port=5432');
        $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    
    public function listar()
    {
        $sql = "select * from tbl_categoria";
        $result = $this->conn->query($sql);
        while($row = $result->Fetch(PDO::FETCH_OBJ))
        {
            echo $row->cat_codigo . '_' .
                 $row->cat_descricao . "<br>\n";
        }
    }
}

//exemplo de uso
try
{
    $categoria = new Categoria();
    $categoria->listar();
}
catch(Exception $e)
{
    printf('<h1>%s</h1>', $e->getMessage());
}

?>

E por ai vai..

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

  • 0
Brother,

Tá tudo sem pé e sem cabeça...

Vamos reformular

<?php
class Categoria
{
    private $conn;

    public function __construct() 
    {
        $this->conn = new PDO('pgsql:dbname=bd_atelie; user=postgres; password=pglocal; host=localhost; port=5432');
        $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    
    public function listar()
    {
        $sql = "select * from tbl_categoria";
        $result = $this->conn->query($sql);
        while($row = $result->Fetch(PDO::FETCH_OBJ))
        {
            echo $row->cat_codigo . '_' .
                 $row->cat_descricao . "<br>\n";
        }
    }
}

//exemplo de uso
try
{
    $categoria = new Categoria();
    $categoria->listar();
}
catch(Exception $e)
{
    printf('<h1>%s</h1>', $e->getMessage());
}

?>

E por ai vai..

Entendi e obrigado, mas ainda não me atende.

Eu preciso imprimir esta dados em um outro arquivo, neste arquivo tem uma tabela e preciso imprimir dentro dela o nome dos campos

<td> echo $categoria->cat_descricao </td>

mas os registros aparecem em apenas uma linha, não preciso disso, mas um em cada linha, por isso o instrução while, entendeu?

Leia de novo minha necessidade por favor!!

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...