1
resposta

Problema para popular classe usando PDO

Senhores, boa tarde, tendo em vista exercitar o que venho aprendendo, no curso de php, resolvi fazer alguns formulários, e como já era de se esperar diversos problemas estão surgindo. Com base no conhecimento adquirido no módulo de PDOII resolvi refatorar uma função (listarInterfacesServidor) de meu pequeno projeto e após a conclusão não conseguir visualizar os dados, via métodos get da classe Interfaces, no formulário e nenhuma mensagem de erro é exibida.


function listarInterfacesServidor($id_servidor) 
    {    
        $query = "SELECT si.cod_interface,i.nome AS nome_interface FROM servidor_interface AS si LEFT JOIN interfaces AS i ON si.cod_interface = i.id WHERE cod_servidor = :id_servidor";
        $conexao = Conexao::pegarConexao();
        $stmt = $conexao->prepare($query);
        $stmt->bindValue(':id_servidor',$id_servidor);
        $stmt->execute();
        $resultado = $stmt->fetchAll();
        return $this->populaInterface($resultado);


private function populaInterface($linha)
    {
        $interfaces = new Interfaces();

        $interfaces->setId($linha['cod_interface']);
        $interfaces->setNome($linha['nome_interface']);

        return $interfaces;

    }    

No Formuário

<?php

 try {
    $interfaceDao = new InterfaceDao();
   $interfacesServidores = interfaceDao->listarInterfacesServidor($servidor['id']);
                                foreach ($interfacesServidores as $interface) :
                                  echo $interface->getNome()."</br>";
                                endforeach;
                              }
 catch (Exception $e)
                              {
                                  Erro::trataErro($e);
                                  exit;
                              }   
                          ?>


Classe 

<?php


class Funcao{

    private $id;
    private $nome;



    public function getId() {
        return $this->id;
    }

    public function setId($id) {
        $this->id = $id;
    }

    public function getNome() {
        return $this->nome;
    }

    public function setNome($nome) {
        $this->nome = $nome;
    }



}

Obs: As interfaces não são listadas no formuário.

1 resposta

Gerson bom dia.

Parece que a chamada está errada:

$interfacesServidores = interfaceDao->listarInterfacesServidor($servidor['id']);
                                foreach ($interfacesServidores as $interface) :
                                  echo $interface->getNome()."</br>";
                                endforeach;

deveria ser:

$interfacesServidores = $interfaceDao->listarInterfacesServidor($servidor['id']);
                                foreach ($interfacesServidores as $interface) :
                                  echo $interface->getNome()."</br>";
                                endforeach;

Dá uma olhada nisso.

Att.