Problema com classe extendida PDO
18/10/2012
0
Abaixo vou passar as classes e o erro que me retorna..
Arquivo usuarioAcessaDAO.class.php
<?php class UsuarioAcessaDAO implements DAO{ private $conex; public function UsuarioAcessaDAO(){ $this->conex = new Conexao(''mysql''); } public function selectRelatorios($usuarioAcessa){ try{ $stmt = $this->conex->prepare(" select ua.id_usuario as usuario, ua.id_relatorios as relatorio from rel_usuario_acessa ua where ua.id_usuario = ?"); $stmt->bindValue(1, $usuarioAcessa->getUsuario()); $this->conex = null; return $stmt; }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); } } public function selectModulos(){ try{ $sql = ''select distinct m.id_modulo, m.sigla from rel_usuario_acessa ua left join rel_relatorios r on ua.id_relatorios = r.id_relatorios left join rel_modulos m on r.id_modulo = m.id_modulo where ua.id_usuario = ''; $stmt = $this->conex->prepare($sql); $this->conex = null; $i=0; while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ $modulos[$i][''ID''] = $row[''ID_MODULO'']; $modulos[$i][''SIGLA''] = $row[''SIGLA'']; } return $modulos; }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); } } } ?>
Arquivo Conexao.php
<?php class Conexao extends PDO { private $dsn = "firebird:dbname=172.17.1.123:banco"; private $user = ''usuario''; private $password = "12345"; public $handle = null; function __construct() { try { if ( $this->handle == null ) { $dbh = parent::__construct( $this->dsn , $this->user , $this->password ); $this->handle = $dbh; return $this->handle; } } catch ( PDOException $e ) { echo ''Connection failed: '' . $e->getMessage( ); return false; } } function __destruct( ) { $this->handle = NULL; } } ?>
Arquivo usuarioAcessa.class.php
class UsuarioAcessa{ private $usuario; private $relatorio; public function setUsuario($_usuario){ $this->usuario = $_usuario; } public function setRelatorio($_relatorio){ $this->relatorio = $_relatorio; } public function getUsuario(){ return $this->usuario; } public function getRelatorio(){ return $this->relatorio; } } ?>
Arquivo index.php
<?php include "includes/logado.php"; include "smarty/libs/Smarty.class.php"; include ''includes/classes/Usuario.class.php''; include ''includes/classes/UsuarioAcessaDAO.class.php''; $smarty = new Smarty(); $smarty->template_dir = "smarty/templates"; $smarty->compile_dir = "smarty/templates_c"; $smarty->config_dir = "smarty/configs"; $smarty->assign(''imagens'',''http://''.$_SERVER[''SERVER_NAME''].''/relatorios/smarty/templates/imagens/''); $smarty->assign(''css'',''http://''.$_SERVER[''SERVER_NAME''].''/relatorios/smarty/templates/estilos/''); $smarty->assign(''user_id'',$_SESSION[''ID'']); $username = strtoupper($_SESSION[''username'']); $smarty->assign(''user_name'',$username); $usuarioAcessa = new UsuarioAcessa(); $usuarioAcessa->setUsuario($_SESSION[''ID'']); $usuarioAcessaDAO = new UsuarioAcessaDAO(); $usuarioAcessaDAO->selectModulos(); $data = date(''d/m/Y''); $smarty->assign(''data'',$data); $smarty->display("index.tpl"); ?>
Quando tento executar me retorna o seguinte erro...
Fatal error: Call to a member function fetch() on a non-object in C:\xampp\htdocs\relatorios\includes\classes\UsuarioAcessaDAO.class.php on line 47
Espero que vocês possam me ajudar..
Obrigado
Felipe Ribeiro
Posts
19/10/2012
Eduardo Oliveira
- O seu arquivo de Conexão ele faz uma conexão com FIREBIRD, e na sua classe usuarioAcessaDAO você passa MYSQL para o construtor do objeto conexão
new Conexao(''mysql'');
Troque isso :
$sql = ''select distinct m.id_modulo, m.sigla from rel_usuario_acessa ua left join rel_relatorios r on ua.id_relatorios = r.id_relatorios left join rel_modulos m on r.id_modulo = m.id_modulo where ua.id_usuario = '';
Por isso :
$sql = ' select distinct m.id_modulo, m.sigla from rel_usuario_acessa ua left join rel_relatorios r on ua.id_relatorios = r.id_relatorios left join rel_modulos m on r.id_modulo = m.id_modulo where ua.id_usuario = "PRECISA DO VALOR PRA COMPARAR" ';
19/10/2012
Eduardo Oliveira
19/10/2012
Felipe Ribeiro
Agora está funcionando !!
Obrigado
Clique aqui para fazer login e interagir na Comunidade :)