Fórum Problema com classe extendida PDO #426584
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
Curtir tópico
+ 0Posts
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" ';
Gostei + 0
19/10/2012
Eduardo Oliveira
Gostei + 0
19/10/2012
Felipe Ribeiro
Agora está funcionando !!
Obrigado
Gostei + 0
19/10/2012
Eduardo Oliveira
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)