Estou desenvovendo um sisteminha simples em PHP e estou tendo uma dificuldade em tratar um erro em especial.
Bom, eu tenho uma classe DAO onde efetua uma busca por ID. Assim sendo, essa busca somente pode retornar 1 registro ou nenhum caso não encontre esse registro. O problema é que eu consigo efetuar a busca quando existem registros e ocorre um erro quando tento fazer uma busca pelo registro que não existe. Para ficar mais fácil o entendimento de vocês segue os códigos.
JogoDAO.php
Essa classe é o DAO da classe jogo. Contém as instruções CRUD e também irá ter diferentes tipos de buscas. Está nessa classe busca por ID.
<?php require("conn.php"); class jogoDAO { public function inserirJogo(Jogo $jogo) { ... } public function updateJogo(Jogo $jogo, $idjogo) { ... } public function deleteJogo($id_jogo) { ... } public function getJogosByID($id_jogo) { //Abrindo conexão $conn = Conn::AbrirConn(); $sql = "SELECT * FROM jogos WHERE id_jogo = $id_jogo"; $result = mysql_query($sql, $conn); //Criando o objeto jogo while($row = mysql_fetch_array($result)) { $Jogo = new Jogo(); $Jogo->setIdJogo($row["id_jogo"]); $Jogo->setTimeCasa($row["time_casa"]); $Jogo->setTimeVisitante($row["time_visitante"]); $Jogo->setPlacarCasa($row["placar_casa"]); $Jogo->setPlacarVisitante($row["placar_visitante"]); $Jogo->setDataHoraJogo($row["datahora_jogo"]); $Jogo->setNarrador($row["narrador"]); $Jogo->setCidade($row["cidade"]); $Jogo->setEstadio($row["estadio"]); $Jogo->setEstado($row["estado"]); $Jogo->setRodada($row["rodada"]); $Jogo->setCampeonato($row["campeonato"]); } return $Jogo; } }
jogoDAO_teste.php
Nesse arquivo fica os testes que eu faço com o DAO.
<?php /** * Teste consulta por ID */ require("../pojo/jogo.php"); require("../dao/jogoDAO.php"); $JogoDAO = new JogoDAO(); $jogo = $JogoDAO->getJogosByID(1); echo("ID do Jogo: " . $jogo->getIdJogo() . "<br>"); echo("Mandante: " . $jogo->getTimeCasa() . "<br>"); echo("Visitante: " . $jogo->getTimeVisitante() . "<br>"); echo("Placar Casa: " . $jogo->getPlacarCasa() . "<br>"); echo("Placar Visitante: " . $jogo->getPlacarVisitante() . "<br>"); echo("Data Hora: " . $jogo->getDataHoraJogo() . "<br>"); echo("Narrador: " . $jogo->getNarrador() . "<br>"); echo("Estádio: " . $jogo->getEstadio() . "<br>"); echo("Cidade: " . $jogo->getCidade() . "<br>"); echo("Estado: " . $jogo->getEstado() . "<br>"); echo("Rodada: " . $jogo->getRodada() . "<br>"); echo("Campeonato: " . $jogo->getCampeonato() . "<br>"); /** * Fim dos testes de consulta */ ?>
Explicando mais uma vez o problema. No meu teste do DAO (postado logo acima) se eu coloco o ID como 3 (em $jogo = $JogoDAO->getJogosByID(1) e esse ID existe no banco, tudo funciona perfeito. Uma beleza, porém se eu coloco um ID que não existe no banco ocorre um erro que eu gostaria de tratar. A mensagem de erro que aparece é essa:
Fatal error: Call to a member function getIdJogo() on a non-object in C:\testes\jogoDAO_teste.php on line 92
Gostaria de tratar esse erro para exibir uma mensagem mais amigável.
A linha 92 é essa: $jogo = $JogoDAO->getJogosByID(1);
Se tiverem dúvidas com relação ao meu problema, podem perguntar.
Grato pela ajuda.
Edição feita por: Ricardo.SEP, 23/02/2008, 13:47.