omm62 1 Denunciar post Postado Agosto 29, 2013 Bom dia colegas. Estou iniciando em php oo e estou criando uma classe mas ao estanciá-la dá erro de sintaxe. Vocês podem me apontar onde está o erro? class Autorizacao { public $pessoa = null; public $sistema = null; public $perfil = null; public $idpessoa = 0; public $idperfil = 0; public $nomesistema = null; // Classe Autorizações Por Pessoa public static function getAutorizacoesByPessoa($idpessoa) { $resultado = array(); $pessoa = Pessoa::getPessoa($idpessoa); include 'configs.php'; $result = mysql_query("SELECT a.*,s.*,p.*,pf.* FROM autorizacao a,sistema s,pessoa p,perfil pf WHERE a.idpessoa = p.idpessoa AND a.idsistema = s.idsistema AND pf.idperfil = a.idperfil AND p.idpessoa = $idpessoa order by nomesistema asc") or die(mysql_error()); while ($row = mysql_fetch_array($result)) { $idperfil = $row["idperfil"]; $idpessoa = $row["idpessoa"]; $idsistema = $row["idsistema"]; $nomesistema = $row["nomesistema"]; $autorizacaoPessoa->idpessoa = Pessoa::getPessoa($idpessoa); array_push($resultado, $autorizacaoPessoa); } return $resultado; } // Fim da Classe Autorizações Por Pessoa Estanciando a classe na página sistemasusr.php <?php include 'objetos.php'; ?> <table id="tabela" border=0 cellspacing=0 cellpadding=10 WIDTH=100%> <?php $pessoa_un = Pessoa::getPessoa($idpessoa); ?> <tr><th colspan='3'>SISTEMAS OPERADOS PELO USUÁRIO</th></tr> <?php $autorizacaoPessoa = Autorizacao::getAutorizacoesByPessoa($pessoa_un->idpessoa); if (sizeof($autorizacaoPessoa) >0 ){ ?> <tr><td><b>SISTEMA</b></td><td><b>PERFIL</b></td></tr> <?php foreach ($autorizacaoPessoa as $autorizacaoPessoa_un) { ?> <tr><td><?php echo $autorizacaoPessoa_un->sistema->nomesistema; ?></td><td><?php echo $autorizacaoPessoa_un->nomeperfil->nomeperfil; ?></td></tr> <?php } } ?> </table> Grato por qualquer ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Agosto 29, 2013 q erro? qual linha? Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Agosto 29, 2013 Cara que zona... Onde está dando erro? Compartilhar este post Link para o post Compartilhar em outros sites
omm62 1 Denunciar post Postado Agosto 29, 2013 Erro You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Agosto 29, 2013 erro de sintaxe na consulta, imprima ela e teste diretamente no banco. Compartilhar este post Link para o post Compartilhar em outros sites
omm62 1 Denunciar post Postado Agosto 29, 2013 Fiz cara. No no banco roda beleza, isso q tá me encucando... Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Agosto 29, 2013 Tente concatenar desta maneira: "SELECT a.*,s.*,p.*,pf.* FROM autorizacao a,sistema s,pessoa p,perfil pf WHERE a.idpessoa = p.idpessoa AND a.idsistema = s.idsistema AND pf.idperfil = a.idperfil AND p.idpessoa =".$idpessoa." order by nomesistema asc" Compartilhar este post Link para o post Compartilhar em outros sites
omm62 1 Denunciar post Postado Agosto 29, 2013 Deixa dar mais detalhes. Seguinte: existem os objetos Pessoa, Sistemas, Autorização. Estou tentando implementar o atributo Autorização por Pessoa ou seja quero listar os sistemas que determinada Pessoa opera. É isso. Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Agosto 29, 2013 quando vc imprimiu a consulta $idpessoa tinha valor? Compartilhar este post Link para o post Compartilhar em outros sites
omm62 1 Denunciar post Postado Agosto 29, 2013 A mudança sugerida por KhaosDoctor não resultou sucesso. Quando imprimi a consulta setei o meu id 629 e listou todos os sistema aos quais tenho acesso. Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Agosto 29, 2013 e quando vc n seta id acontece o q? poste seu teste. Compartilhar este post Link para o post Compartilhar em outros sites
omm62 1 Denunciar post Postado Agosto 29, 2013 Sem o id dá: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1. Então a $idpessoa tá vazia? Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Agosto 29, 2013 eu olhei a consulta e não achei erro de sintaxe(pode ter sim talvez tenha passado batido), o unico ponto q pode dar problema é o $idpessoa vazio. verifique a primeira atribuição de $idpessoa <?php $pessoa_un = Pessoa::getPessoa($idpessoa); ?> Compartilhar este post Link para o post Compartilhar em outros sites
omm62 1 Denunciar post Postado Agosto 29, 2013 Galera ainda não achei o que tá dando bronca... Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Agosto 29, 2013 Galera ainda não achei o que tá dando bronca... continue, persista! Compartilhar este post Link para o post Compartilhar em outros sites
omm62 1 Denunciar post Postado Agosto 29, 2013 Bem pessoal, agora o código está assim: // Classe Autorizações Por Pessoa public static function getAutorizacoesByPessoa($idpessoa) { $resultado = array(); include 'configs.php'; $result = mysql_query("SELECT a.*,s.*,p.*,pf.* FROM autorizacao a,sistema s,pessoa p,perfil pf WHERE a.idpessoa = p.idpessoa AND a.idsistema = s.idsistema AND pf.idperfil = a.idperfil AND a.idpessoa = $idpessoa") or die(mysql_error()); while ($row = mysql_fetch_array($result)) { $idperfil = $row["idperfil"]; $idpessoa = $row["idpessoa"]; $idsistema = $row["idsistema"]; $autorizacaoPessoa->sistema = Sistema::getSistema($idsistema); $autorizacaoPessoa->perfil = Perfil::getPerfil($idperfil); $autorizacaoPessoa->pessoa = Pessoa::getPessoa($idpessoa); array_push($resultado, $autorizacaoPessoa); } return $resultado; } // Fim da Classe Autorizações Por Pessoa Código da página de exibição: require 'logar.php'; include 'objetos.php'; ?> <table id="tabela" border=0 cellspacing=0 cellpadding=10 WIDTH=100%> <?php $idpessoa = $_SESSION['idpessoa']; ?> <tr><th colspan='3'>SISTEMAS OPERADOS PELO USUÁRIO</th></tr> <?php $autorizacaoPessoa = Autorizacao::getAutorizacoesByPessoa($idpessoa); if (sizeof($autorizacaoPessoa) >0 ){ ?> <tr><td><b>SISTEMA</b></td><td><b>PERFIL</b></td></tr> <?php foreach ($autorizacaoPessoa as $autorizacaoPessoa_un) { ?> <tr><td><?php echo $autorizacaoPessoa_un->sistema->nomesistema; ?></td><td><?php echo $autorizacaoPessoa_un->perfil->nomeperfil; ?></td></tr> <?php } } ?> </table> O que acontece agora é que exibe sempre o último nome de sistema do usuário. Digamos que determinado usuário opera os sistema A, B, C e D com os perfis 1,2,3 e 4 respectivamente. São exibidas quatro linhas desta forma: Nome do Sistema Perfil D 4 D 4 D 4 D 4 Entendem? Compartilhar este post Link para o post Compartilhar em outros sites
omm62 1 Denunciar post Postado Agosto 30, 2013 Pessoal, consegui resolver a bronca. Que fiz, estanciei a classe Autorizacao dentro da AutorizacoesByPessoa, assim: // Classe Autorizações Por Pessoa public static function getAutorizacoesByPessoa($idpessoa) { $resultado = array(); include 'configs.php'; $result = mysql_query("SELECT a.*,s.*,p.*,pf.* FROM autorizacao a,sistema s,pessoa p,perfil pf WHERE a.idpessoa = p.idpessoa AND a.idsistema = s.idsistema AND pf.idperfil = a.idperfil AND a.idpessoa = $idpessoa") or die("erro".mysql_error()); while ($row = mysql_fetch_array($result)) { $autorizacao = new Autorizacao(); $autorizacao->perfil= $row["idperfil"]; $autorizacao->sistema = $row["idsistema"]; array_push($resultado, $autorizacao); } return $resultado; } // Fim da Classe Autorizações Por Pessoa Estanciei as classes Sistema e Perfil na página de exibição e ficou assim: <?php require 'logar.php'; include 'objetos.php'; ?> <table id="tabela" border=0 cellspacing=0 cellpadding=10 WIDTH=100%> <?php $idpessoa = $_SESSION['idpessoa']; ?> <tr><th colspan='2'>SISTEMAS OPERADOS PELO USUÁRIO</th></tr> <?php $autorizacoesPessoa = Autorizacao::getAutorizacoesByPessoa($idpessoa); if (sizeof($autorizacoesPessoa) > 0) { ?> <tr><td><b>SISTEMA</b></td><td><b>PERFIL</b></td></tr> <?php foreach ($autorizacoesPessoa as $autorizacoesPessoa_un) { $sistema = Sistema::getSistema($autorizacoesPessoa_un->sistema); $perfil = Perfil::getPerfil($autorizacoesPessoa_un->perfil); ?> <tr><td><?php echo $sistema->nomesistema;?></td><td><?php echo $perfil->nomeperfil; ?></td></tr> <?php } } ?> </table> Muito grato pela ajuda . Compartilhar este post Link para o post Compartilhar em outros sites