1
resposta

[Dúvida] Página Editar não Funciona

Bom dia ! tudo bem? Atualmente ao direcionar até a pagina de editar, entra no condicional dentro do index.php pra direcionar até a rota certa, e realmente traz o arquivo correto do formulário, porém não estou conseguindo fazer o "select" do ID que está na URL, ao fazer um dump do $id está vazio, e simplesmente não entra no Condicional do formulario.php pra rodar a query select do banco. Alguma dica? Obrigado desde já!

Obs: Estou usando Wamp porém já configurei o vhosts + host + htacess para o funcionamento do controller/rotas, como visto na url no navegador abaixo, não estou com o prefixo "localhost" da configuração padrão do Wamp.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Arquivo formulario.php:

<?php

include 'conexao.php';
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);

$video = [
    'url' => '',
    'title' => '',
];

if ($id !== false && $id !== null) {
    $statement = $conexao->prepare('SELECT FROM videos WHERE id = ?;');
    $statement->bindValue(1, $id, PDO::PARAM_INT);
    $statement->execute();
    $video = $statement->fetch(\PDO::FETCH_ASSOC);
}

?>
<!DOCTYPE html>
<html lang="pt-br">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="css/reset.css">
    <link rel="stylesheet" href="css/estilos.css">
    <link rel="stylesheet" href="css/estilos-form.css">
    <link rel="stylesheet" href="css/flexbox.css">
    <title>AluraPlay</title>
    <link rel="shortcut icon" href="./img/favicon.ico" type="image/x-icon">
</head>

<body>

    <!-- Cabecalho -->
    <header>

        <nav class="cabecalho">
            <a class="logo" href="/"></a>

            <div class="cabecalho__icones">
                <a href="/novo-video/" class="cabecalho__videos"></a>
                <a href="/aluraplay/" class="cabecalho__sair">Sair</a>
            </div>
        </nav>

    </header>

    <main class="container">

        <form class="container__formulario"
              method="post">
            <h2 class="formulario__titulo">Envie um vídeo!</h2>
                <div class="formulario__campo">
                    <label class="campo__etiqueta" for="url">Link embed</label>
                    <input name="url"
                           value="<?= $video['url']; ?>"
                           class="campo__escrita"
                           required
                           placeholder="Por exemplo: https://www.youtube.com/embed/FAY1K2aUg5g"
                           id='url' />
                </div>

                <div class="formulario__campo">
                    <label class="campo__etiqueta" for="titulo">Titulo do vídeo</label>
                    <input name="titulo"
                           value="<?= $video['title']; ?>"
                           class="campo__escrita"
                           required
                           placeholder="Neste campo, dê o nome do vídeo"
                           id='titulo' />
                </div>

                <input class="formulario__botao" type="submit" value="Enviar" />
        </form>

    </main>

</body>

</html>

Arquivo conexao.php :

<?php

    //passo 1 conexao db
    $server = "127.0.0.1";
    $usuario = "root";
    $senha = "";
    $banco = "course_php";

    try {
        $conexao = new PDO('mysql:host=localhost;dbname=course_php', $usuario, $senha);
        //abaixo tratamento de erro
        $conexao->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        //abaixo exibe tratamento de erro
    } catch (PDOException $erro) {
        echo "Ocorreu erro conexao : {$erro->getMessage()}";
        $conexao = null;
    }
Arquivo Index.php : <?php

    declare(strict_types=1);

    if (!array_key_exists('REDIRECT_URL', $_SERVER) || $_SERVER['REDIRECT_URL'] === '/') {
        require_once  'exibicao-videos.php';
    } elseif ($_SERVER['REDIRECT_URL'] === '/form') {
        if ($_SERVER['REQUEST_METHOD'] === 'GET') {
            require_once  'formulario.php';
        } elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
            require_once 'novo-video.php';
        }
    } elseif ($_SERVER['REDIRECT_URL'] === '/edit') {
        if ($_SERVER['REQUEST_METHOD'] === 'GET') {
            require_once 'formulario.php';
        } elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
            require_once 'editar-video.php';
        }
    } elseif ($_SERVER['REDIRECT_URL'] === '/remover-video') {
        require_once  'remover-video.php';
    } else {
        http_response_code(404);
    }
1 resposta

Olá, Allan. Tudo bem?

Você já verificou se a variável $id está recebendo o valor correto? Uma dica é utilizar a função var_dump().

var_dump($id)

Além disso, notei que na sua query SELECT no arquivo formulario.php, está faltando o nome das colunas que você deseja selecionar. Tente adicionar as colunas que você precisa na query, por exemplo:

$statement = $conexao->prepare('SELECT url, title FROM videos WHERE id = ?;');

Espero ter ajudado! Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓