Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] bug ao excluir um video

ao clicar em excluir ele da a mensagem de sucesso "sucesso=1' mas não exlui o video

index.php

<?php

$dbPath = __DIR__ . '/banco.sqlite';
$pdo = new PDO("sqlite:$dbPath");
$videoList = $pdo->query('SELECT * FROM videos;')->fetchAll(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/flexbox.css">
    <title>AluraPlay</title>
    <link rel="shortcut icon" href="./img/favicon.ico" type="image/x-icon">
</head>

<body>

    <header>

        <nav class="cabecalho">
            <a class="logo" href="./index.html"></a>

            <div class="cabecalho__icones">
                <a href="./pages/enviar-video.html" class="cabecalho__videos"></a>
                <a href="./pages/login.html" class="cabecalho__sair">Sair</a>
            </div>
        </nav>

    </header>

    <ul class="videos__container" alt="videos alura">
        <?php foreach($videoList as $video) : ?>
            <?php if (str_starts_with($video['url'], 'http')) {
                $video['url'] = 'https://www.youtube.com/watch?v=vwoqx_JqOWI';
            } ?>

            <li class="videos__item">
                <iframe width="100%" height="72%" src="<?php echo $video['url']; ?>"
                    title="YouTube video player" frameborder="0"
                    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
                    allowfullscreen></iframe>
                <div class="descricao-video">
                    <img src="./img/logo.png" alt="logo canal alura">
                    <h3><?php echo $video['title']; ?></h3>
                    <div class="acoes-video">
                        <a href="./pages/enviar-video.html">Editar</a>
                        <a href="/remover-video.php?id="<?=$video['id']; ?> >Excluir</a>
                    </div>
                </div>
            </li>

        <?php endforeach;?>
    </ul>
</body>

</html>

remover-video.php

<?php 

$dbPath = __DIR__ . '/banco.sqlite';
$pdo = new PDO("sqlite:$dbPath");

$id = $_GET['id'];
$sql = 'DELETE FROM videos WHERE id = ?';
$statement = $pdo->prepare($sql);
$statement->bindValue(1, $id);

if($statement->execute() === false) {
    header( 'location: /index.php?sucesso=0');
} else {
    header( 'location: /index.php?sucesso=1');
}

var_dump da tabela

array(2) { [0]=> array(3) { ["id"]=> int(1) ["url"]=> string(43) "https://www.youtube.com/watch?v=J4BVaXkwmM8" ["title"]=> NULL } [1]=> array(3) { ["id"]=> int(2) ["url"]=> string(43) "https://www.youtube.com/watch?v=J4BVaXkwmM8" ["title"]=> NULL } }

obs: o problema de não salvar os nome ja resolvi

1 resposta
solução!

<a href="/remover-video.php?id="<?=$video['id']; ?> >Excluir</a>

Repara que o <?=$video['id']; ?> tá fora das aspas, logo, não faz parte da URL. Com isso, o id não é enviado e você está tentando apagar um vídeo com o ID 0.

Conforme a gente vai avançando no curso você vai aprender sobre validações de forma que esse erro não passaria despercebido mais, mas por enquanto já tá aí a resposta pro problema. :-D

PS.: Recomendo fortemente o curso de XDebug aqui da Alura. Uma sessão de debug te mostraria rapidamente o problema no código. :-)