[Livro PHP e MySQL] Dúvidas em geral

Oi, @david_top.tricolor . Eu acredito que ali na linha 52 você precise usar $_GET['id']. Até onde eu lembro o código da tarefa é passado pela URL, que no PHP aparece na superglobal $_GET.

Oi, @david_top.tricolor.

Qual é o erro que aparece? Tente fazer um “debug” no seu código. A maneira mais simples de fazer isso no PHP é usando a função die() que para a execução do script.

Algo como:

<?php

session_start();

require "config.php";
require "banco.php";
require "ajudantes.php";

$exibir_tabela = false;
$tem_erros = false;
$erros_validacao = [];

if (tem_post()) {
    die("Cheguei aqui, então tem POST");
    $tarefa = [
        'id' => $_POST['id'],
        'nome' => $_POST['nome'],
        'descricao' => '',
        'prazo' => '',
        'prioridade' => $_POST['prioridade'],
        'concluida' => 0,
    ];

    if (strlen($tarefa['nome']) == 0) {
        $tem_erros = true;
        $erros_validacao['nome'] = 'O nome da tarefa é obrigatório!';
    }

Depois vai baixando a chamada para die() após cada instrução para entender até onde ele chega sem erros.

Está parte eu já consegui resolver, estou agora no capitulo 13. eu fiz um comentário dizendo que estava tudo ok e mostrei uma parte do livro que estava induzindo ao erro, eu comparei com os seus códigos no github, por isso consegui achar o erro, porém meu comentário foi ocultado temporariamente…

Estou sofrendo agora no cap. 13 kkkkkkkkk já estou revisando os códigos pela segunda vez pq não acho o erro, pode me dar um auxilio? estou te mandando os erros abaixo, já comparei com os códigos do livro e git e nada… eu coloquei os 2 códigos q estão sendo mencionados no meu GIT, o link está no meu comentario acima, coloquei em um novo repositorio: ERROS, não está deixando eu postar o link aqui…

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

Fatal error : Uncaught TypeError: Argument 1 passed to RepositorioTarefas::__construct() must be an instance of mysqli, null given, called in C:\xampp\htdocs\tarefas\tarefas.php on line 9 and defined in C:\xampp\htdocs\tarefas\classes\RepositorioTarefas.php:7 Stack trace: #0 C:\xampp\htdocs\tarefas\tarefas.php(9): RepositorioTarefas->__construct(NULL) #1 {main} thrown in C:\xampp\htdocs\tarefas\classes\RepositorioTarefas.php on line 7


‎Aviso‎ ‎: Variável indefinida: mysqli em ‎ ‎C:\xampp\htdocs\tarefas\tarefas.php‎ ‎ na linha ‎ ‎9‎
‎ ‎
‎ ‎ ‎Erro fatal‎ ‎: TypeError não ensinado: Argumento 1 passado para RepositorioTarefas::__construct() deve ser uma instância de mysqli, nulo dado, chamado em C:\xampp\htdocs\tarefas\tarefas\tarefas.php on line 9 e definido em C:\xampp\htdocs\tarefas\classes\RepositorioTarefas.php:7 Traço de pilha: #0 C:\xampp\htdocs\tarefas\tarefas.php(9): RepositorioTarefas->__construct(NULL) #1 {main} lançado em ‎ ‎C:\xampp\htdocs\tarefas\classes\RepositorioTarefas.php‎ ‎ na linha ‎ ‎7‎

Me parece que o arquivo banco.php não está sendo incluído. Veja que a variável $mysqli não está definida.

Fala Junior,

Estou no capitulo 12, e ao tentar enviar email não deu certo, tentei testar a função de envio separadamente chamando ela no final do arquivo “ajudantes.php”, mas apresentar abaixo:

Fatal error: Uncaught Error: Interface ‘PHPMailer\PHPMailer\OAuthTokenProvider’ not found in C:\Users\Dev\Documents\www\php\livro-php-mysql\cap12\bibliotecas\PHPMailer\src\OAuth.php on line 36

Error: Interface ‘PHPMailer\PHPMailer\OAuthTokenProvider’ not found in C:\Users\Dev\Documents\www\php\livro-php-mysql\cap12\bibliotecas\PHPMailer\src\OAuth.php on line 36

inc.php

<?php

require __DIR__ . "/src/Exception.php";
require __DIR__ . "/src/OAuth.php";
require __DIR__ . "/src/PHPMailer.php";
require __DIR__ . "/src/POP3.php";
require __DIR__ . "/src/SMTP.php";

config.php

<?php
/**
 * CONEXÃO AO BANCO DE DADOS (MySQL)
 */

define("BD_SERVIDOR", "localhost");
define("BD_USUARIO", "root");
define("BD_SENHA", "");
define("BD_BANCO", "tarefa");

// E-mail para notifição
define("EMAIL_NOTIFICAÇÃO", "cleberson.osorioti@hotmail.com");

Olá, @cleberson.osorioti1.

Parece que agora a biblioteca PHPMailer tem mais um arquivo necessário para funcionar: /src/OAuthTokenProvider.php. Faça o require desse arquivo também.

ERRO CARACTERES ESPECIAIS [SOLUÇÃO]

ErroCaracteres

Alterei o ChaSet o resolveu:

$email = new PHPMailer();

$email->CharSet = 'UTF-8';

Boa! Eu ia comentar algo assim. Mas ainda bem que você já resolveu :slight_smile:

1 curtida

@evaldojuniorbento

Estou enfrentando esse erro após finalizar o Capitulo 13.7

Olá, @cleberson.osorioti1. Parece que o primeiro parâmetro passado para mysqli_result::fetch_object() não é um nome de classe válido. Veja se o arquivo com a classe Anexo foi incluído.

Olá, não aparece nenhum erro porém as tarefas não aparecem cadastradas.

código:

Lista de Tarefas <?php session_start(); if (isset($_GET['nome']) && $_GET ['nome'] != ''){ $tarefa = array(); $tarefa['nome'] = $_GET['nome']; if (isset($_GET['descrição'])){ $tarefa['descrição'] = $_GET['descrição']; } $_SESSION['lista_tarefas'] []= $_GET['nome']; }else{ $tarefa['descrição'] = ''; } if (isset($_GET ['prazo'])){ $tarefa['prazo'] = $_GET['prazo']; }else{ $tarefa['prazo'] = ''; } //$tarefa ['prioridade'] = $_GET['prioridade']; if (isset($_GET['concluida'])){ $tarefa['concluida'] = $_GET['concluida']; }else{ $tarefa['concluida'] = ''; $_SESSION['lista_tarefas'][] = $tarefa; } if (isset($_SESSION ['lista_tarefas'])){ }else{ $lista_tarefas = array(); } if(isset($_SESSION['lista_tarefas'])){ $lista_tarefas = $_SESSION['lista_tarefas']; } $lista_tarefas = $_SESSION['lista_tarefas']; $lista_tarefas = []; // if (isset($SESSION[‘listatarefas’])) { //$lista_tarefas = $SESSION[‘listatarefas’]; //} else { //$lista_tarefas = array(); //} include "template.php"; ?>
Lista de Tarefas <?php session_start(); if (isset($_GET['nome']) && $_GET ['nome'] != ''){ $tarefa = array(); $tarefa['nome'] = $_GET['nome']; if (isset($_GET['descrição'])){ $tarefa['descrição'] = $_GET['descrição']; } $_SESSION['lista_tarefas'] []= $_GET['nome']; }else{ $tarefa['descrição'] = ''; } if (isset($_GET ['prazo'])){ $tarefa['prazo'] = $_GET['prazo']; }else{ $tarefa['prazo'] = ''; } //$tarefa ['prioridade'] = $_GET['prioridade']; if (isset($_GET['concluida'])){ $tarefa['concluida'] = $_GET['concluida']; }else{ $tarefa['concluida'] = ''; $_SESSION['lista_tarefas'][] = $tarefa; } if (isset($_SESSION ['lista_tarefas'])){ }else{ $lista_tarefas = array(); } if(isset($_SESSION['lista_tarefas'])){ $lista_tarefas = $_SESSION['lista_tarefas']; } $lista_tarefas = $_SESSION['lista_tarefas']; $lista_tarefas = []; // if (isset($SESSION[‘listatarefas’])) { //$lista_tarefas = $SESSION[‘listatarefas’]; //} else { //$lista_tarefas = array(); //} include "template.php"; ?>

Olá, não aparece nenhum erro porém as tarefas não aparecem cadastradas, aparece apenas na url.

código:

Lista de Tarefas <?php session_start(); if (isset($_GET['nome']) && $_GET ['nome'] != ''){ $tarefa = array(); $tarefa['nome'] = $_GET['nome']; if (isset($_GET['descrição'])){ $tarefa['descrição'] = $_GET['descrição']; } $_SESSION['lista_tarefas'] []= $_GET['nome']; }else{ $tarefa['descrição'] = ''; } if (isset($_GET ['prazo'])){ $tarefa['prazo'] = $_GET['prazo']; }else{ $tarefa['prazo'] = ''; } //$tarefa ['prioridade'] = $_GET['prioridade']; if (isset($_GET['concluida'])){ $tarefa['concluida'] = $_GET['concluida']; }else{ $tarefa['concluida'] = ''; $_SESSION['lista_tarefas'][] = $tarefa; } if (isset($_SESSION ['lista_tarefas'])){ }else{ $lista_tarefas = array(); } if(isset($_SESSION['lista_tarefas'])){ $lista_tarefas = $_SESSION['lista_tarefas']; } $lista_tarefas = $_SESSION['lista_tarefas']; $lista_tarefas = []; // if (isset($SESSION[‘listatarefas’])) { //$lista_tarefas = $SESSION[‘listatarefas’]; //} else { //$lista_tarefas = array(); //} include "template.php"; ?>

Você conseguiu resolver isso, @joao ?