Erro no Capítulo 14.2 O REPOSITORIO DE TAREFAS

32 views
Skip to first unread message

Matheus Vidal

unread,
Jan 31, 2018, 8:06:36 PM1/31/18
to Livro PHP e MySQL - Casa do Código
Boa Noite, estou no capitulo 14 do livro e seguindo todos os passos e agora ao testar a  aplicação depois de criar o RepositorioTarefas.php e fazer as alterações no tarefas.php está apresentado a seguinte mensagem de erro, o que pode ser? Não consegui descobrir...

Notice: Undefined variable: mysqli in C:\xampp\htdocs\tarefas\tarefas.php on line 9

Notice: Undefined index: id in C:\xampp\htdocs\tarefas\tarefas.php on line 10

Fatal error: Uncaught Error: Call to a member function query() on null in C:\xampp\htdocs\tarefas\classes\RepositorioTarefas.php:67 Stack trace: #0 C:\xampp\htdocs\tarefas\classes\RepositorioTarefas.php(61): RepositorioTarefas->buscar_tarefas() #1 C:\xampp\htdocs\tarefas\tarefas3.php(10): RepositorioTarefas->buscar(NULL) #2 {main} thrown in C:\xampp\htdocs\tarefas\classes\RepositorioTarefas.php on line 67


Seguem os arquivos Tarefas e ResositorioTarefas:

<?php 
    session_start();
require "config.php";
require "banco.php";
require "ajudantes.php";
require "classes/Tarefa.php";
require "classes/RepositorioTarefas.php";
$repositorio_tarefas = new RepositorioTarefas($mysqli);
$tarefa = $repositorio_tarefas->buscar($_GET['id']);
$exibir_tabela = true;
$tem_erros = false;
$erros_validacao = [];
$tarefa = new Tarefa();
$tarefa->setPrioridade(1);
if (tem_post()) {
if (array_key_exists('nome', $_POST)
&& strlen($_POST['nome']) > 0) {
$tarefa->setNome($_POST['nome']);
} else {
$tem_erros = true;
$erros_validacao['nome'] =
'O nome da tarefa é obrigatório!';
}
if (array_key_exists('descricao', $_POST)) {
$tarefa->setDescricao($_POST['descricao']);
} else {
$tarefa->setDescricao('');
}
if (array_key_exists('prazo', $_POST)
&& strlen($_POST['prazo']) > 0) {
if (validar_data($_POST['prazo'])) {
$tarefa->setPrazo(
traduz_data_br_para_objeto($_POST['prazo'])
);
} else {
$tem_erros = true;
$erros_validacao['prazo'] =
'O prazo não é uma data válida!';
}
} else {
$tarefa->setPrazo('');
}
$tarefa->setPrioridade($_POST['prioridade']);
if (array_key_exists('concluida', $_POST)) {
$tarefa->setConcluida(true);
} else {
$tarefa->setConcluida(false);
}
if (! $tem_erros) {
$repositorio_tarefas->salvar($tarefa);
if (isset($_POST['lembrete'])
&& $_POST['lembrete'] == '1') {
enviar_email($tarefa);
}
header('Location: tarefas.php');
die();
        }
}
$tarefas = $repositorio_tarefas->buscar();
include "template.php";
?>



<?php
// arquivo classes/RepositorioTarefas.php
class RepositorioTarefas
{
private $conexao;
public function __construct($conexao)
{
$this->conexao = $conexao;
}
public function salvar(Tarefa $tarefa)
{
$nome = $tarefa->getNome();
$descricao = $tarefa->getDescricao();
$prioridade = $tarefa->getPrioridade();
$prazo = $tarefa->getPrazo();
$concluida = ($tarefa->getConcluida()) ? 1 : 0;
if (is_object($prazo)) {
$prazo = $prazo->format('Y-m-d');
}
$sqlGravar = "
INSERT INTO tarefas
(nome, descricao, prioridade, prazo, concluida)
VALUES
(
'{$nome}',
'{$descricao}',
{$prioridade},
'{$prazo}',
{$concluida}
)
";
$this->conexao->query($sqlGravar);
}
public function atualizar(Tarefa $tarefa)
{
$id = $tarefa->getId();
$nome = $tarefa->getNome();
$descricao = $tarefa->getDescricao();
$prioridade = $tarefa->getPrioridade();
$prazo = $tarefa->getPrazo();
$concluida = ($tarefa->getConcluida()) ? 1 : 0;
if (is_object($prazo)) {
$prazo = $prazo->format('Y-m-d');
}
$sqlEditar = "
UPDATE tarefas SET
nome = '{$nome}',
descricao = '{$descricao}',
prioridade = {$prioridade},
prazo = '{$prazo}',
concluida = {$concluida}
WHERE id = {$id}
";
$this->conexao->query($sqlEditar);
}
public function buscar($tarefa_id = 0)
{
if ($tarefa_id > 0) {
return $this->buscar_tarefa($tarefa_id);
} else {
return $this->buscar_tarefas();
}
}
private function buscar_tarefas()
{
$sqlBusca = 'SELECT * FROM tarefas';
$resultado = $this->conexao->query($sqlBusca);
$tarefas = [];
while ($tarefa = $resultado->fetch_object('Tarefa')) {
$tarefa->setAnexos(
$this->buscar_anexos($tarefa->getId())
);
$tarefas[] = $tarefa;
}
return $tarefas;
}
private function buscar_tarefa($id)
{
$sqlBusca = 'SELECT * FROM tarefas WHERE id = ' . $id;
$resultado = $this->conexao->query($sqlBusca);
$tarefa = $resultado->fetch_object('Tarefa');
$tarefa->setAnexos(
$this->buscar_anexos($tarefa->getId())
);
return $tarefa;
}
function remover($tarefa_id)
{
$sqlRemover = "DELETE FROM tarefas WHERE id = {$tarefa_id
}";
$this->conexao->query($sqlRemover);
}
public function buscar_anexos($tarefa_id)
{
$sqlBusca =
"SELECT * FROM anexos WHERE tarefa_id = {$tarefa_id}";
$resultado = $this->conexao->query($sqlBusca);
$anexos = array();
while ($anexo = $resultado->fetch_object('Anexo')) {
$anexos[] = $anexo;
}
return $anexos;
}
public function buscar_anexo($anexo_id)
{
$sqlBusca = "SELECT * FROM anexos WHERE id = {$anexo_id}";
$resultado = $this->conexao->query($sqlBusca);
return $resultado->fetch_object('Anexo');
}
public function salvar_anexo(Anexo $anexo)
{
$sqlGravar = "INSERT INTO anexos
(tarefa_id, nome, arquivo)
VALUES
(
{$anexo->getTarefaId()},
'{$anexo->getNome()}',
'{$anexo->getArquivo()}'
)
";
$this->conexao->query($sqlGravar);
}
public function remover_anexo($id)
{
$sqlRemover = "DELETE FROM anexos WHERE id = {$id}";
$this->db->query($conexao, $sqlRemover);
}
}


Evaldo Junior

unread,
Feb 1, 2018, 1:28:26 PM2/1/18
to Livro PHP e MySQL - Casa do Código
Olá, Matheus.

Parece que a variável $mysql não existe. Verifique a criação dela no arquivo banco.php.

Abraços

--
Você recebeu essa mensagem porque está inscrito no grupo "Livro PHP e MySQL - Casa do Código" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para phpemysqlcasadocodigo+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
Message has been deleted
0 new messages