BLOG

#4【脱初心者】PHP、MySQLインスタ風アプリを作る【画像削除機能の実装】Xampp

2022-07-14
どうもユキです!
今回のYoutubeシリーズはPHPとMySQLを学びながら画像投稿アプリにチャレンジしています!
これまでの動画はこちら!
・はじめに
PHPを勉強する時、最初に見る動画【PHP/XAMPP/環境構築方法】
・第一回
アプリのデータベースを作ろう編
・第二回
データベースとPHPを連携して画像を登録編
・第三回
一覧画面と詳細画面に登録した画像を反映編


これまでの動画で画像をアップロードしてデータベースに保存、そして画像を表示するところまで完成しました!
四回目となる今回の動画では投稿した画像を削除する機能を作っていきます。
前回画像登録機能が完成しているので予め画像をいくつか登録しておきましょう!

しかし今のままでは削除ボタンを押してもなにも反応しません、、、

それもそのはず、今はボタンの見た目だけで削除処理が書かれていないのです!
削除ができるようにするためには削除ボタンを押したタイミングでどの画像を削除するのかの情報が必要になります。


その情報はすでに、前回の動画で詳細画面でどの画像を表示すればいいかを判断するためにクエリパラメータを使ってURLにid情報を持たせました!
今回もこれを使って削除ボタンを押したタイミングでidを渡してあげます!


SELECT文の復習や今回新たにonclick(オンクリック)属性、unlink(アンリンク)も使って削除機能を実装します!
詳しい解説は是非動画をご覧ください!


次回は今回のシリーズラスト!画像の更新機能とコメント機能を作ってアプリを完成させちゃいます。
是非チャンネル登録よろしくお願いします!

使用したコード

★imageDetail.php
<!DOCTYPE html>
<html lang="ja">
<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 rel="stylesheet" href="../style.css">
  <title>画像投稿アプリ</title>
</head>
<body>
  <?php include('../dbConfig.php') ?>
  <?php include('../getDatas.php') ?>
  <?php include('./header.php') ?>
  <div class="detailImageBox">
    <div class="detailImage">
      <img src="../images/<?php echo $data['image']['file_name']; ?>" alt="投稿画像">
      <div class="detailImagButton">
        <button class="updateButton">更新</button>
        <button class="deleteButton" onclick="location.href='../deleteImage.php?id=<?php echo $_GET['id']; ?>';">削除</button>
      </div>
      <button onclick="location.href='./index.php';">戻る</button>
    </div>
    <div class="comment">
      <p class="commentTitle">コメント</p>
      <ul>
        <li>コメントコメントコメント</li>
        <li>コメントコメントコメント</li>
        <li>コメントコメントコメント</li>
        <li>コメントコメントコメント</li>
        <li>コメントコメントコメント</li>
        <li>コメントコメントコメント</li>
        <li>コメントコメントコメント</li>
        <li>コメントコメントコメント</li>
        <li>コメントコメントコメント</li>
        <li>コメントコメントコメント</li>
        <li>コメントコメントコメント</li>
        <li>コメントコメントコメント</li>
        <li>コメントコメントコメント</li>
        <li>コメントコメントコメント</li>
        <li>コメントコメントコメント</li>
        <li>コメントコメントコメント</li>
        <li>コメントコメントコメント</li>
      </ul>
      <div class="submitComment">
        <form action="" method="post" enctype="multipart/form-data">
          <textarea name="comment" id="comment" cols="40" rows="10"></textarea>
          <button type="submit" name="submit">送信</button>
        </form>
      </div>
  </div>
</div>
</body>
</html>
★deleteImage.php
<?php

include('./dbConfig.php');

$targetDirectory = 'images/';
$imageId = $_GET['id'];

if(!empty($imageId)) {
    $sql = "SELECT file_name FROM images WHERE id = " . $imageId;

    $sth = $db->prepare($sql);
    $sth->execute();
    $getImageName = $sth->fetch();

    $deleteImage = unlink($targetDirectory . $getImageName['file_name']);

    if($deleteImage) {
        $deleteRecord = $db->query("DELETE FROM images WHERE id = " . $imageId);

        if($deleteRecord) {
            header('Location:' . './html/index.php', true, 303);
            exit();
        }
    }
}

株式会社ロックシステム

「ブラック企業をやっつけろ!!」を企業理念にエンジニアが働きやすい環境をつきつめる大阪のシステム開発会社。2014年会社設立以来、残業時間ほぼゼロを達成し、高い従業員還元率でエンジニアファーストな会社としてIT業界に蔓延るブラックなイメージをホワイトに変えられる起爆剤となるべく日々活動中!絶賛エンジニア募集中。