機能概要

ファイルアップロードした画像をニュース(お知らせ)一覧に追加して表示します。

プログラミングコード

「newslist_v2.php」画像付きお知らせ一覧ページファイル

  • 4行目:「config.php」を読み込み、その中の変数情報を使用することができるようになります。
  • 10~21行目:「SQL文」を作成します。
  • 43行目:「foreach( )」は、62行目の「endforeach」までを繰り返します。今回の条件では、「&data」内のレコードが無くなるまで繰り返します。
  • 55行目:「$imgFilePath」にデータベース内のフォルダ名とファイル名を使用して、パスを作成します。
  • 56行目:取得したレコード内のカラム「$row[‘file_name’]」に値が入っている、かつ、55行目で取得したフォルダ内にファイルが存在するかをチェック(file_exists)し、上記の条件を満たす場合、57行目の画像を表示処理を行う。
<?php

//データベース接続情報を格納
include("config.php");

try{

    $dbh = new PDO($dsn, $user, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "select"
        ." nt.seq_no"
        .",nt.title_kj"
        .",nt.insert_at"
        .",nft.folder_name"
        .",nft.file_name"
        ." from news_tbl nt"
        ." left join news_fileuploads_tbl nft"
        ." on nt.seq_no = nft.news_no"
        ." and nft.delete_ku = '0'"
        ." where nt.delete_ku = '0'"
        ." order by nt.seq_no desc;";
    $stmt = $dbh->prepare($sql);
    $stmt->execute();

    $count = $stmt->rowCount();
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
        $data[] = $row;
    }

}catch (PDOException $e){
    echo($e->getMessage());
    die();
}

?>

<html>
<body>
<h1>ニュース一覧</h1>
<a href="newsAdd_v2.php">新規登録</a><br><br>
<table border=1>
    <tr><th>id</th><th>日付</th><th>タイトル</th><th>画像</th></tr>
    <?php foreach($data as $row): ?>
    <tr>
        <td><?php echo $row['seq_no'];?></td>
        <td>
            <?php
                $Date = date($row['insert_at']); 
                echo date('Y.m.d', strtotime($Date));
            ?> 
        </td>
        <td><a href="newsArticle.php?seq_no=<?php echo $row['seq_no'];?>"><?php echo $row['title_kj'];?></a></td>
        <td>
            <?php
                $imgFilePath = "uploads/".$row['folder_name']."/".$row['file_name'];
                if(isset($row['file_name']) && file_exists($imgFilePath)){
                    echo "<img src='".$imgFilePath."'>";
                }
            ?>
        </td>
     </tr>
    <?php endforeach; ?>
</table>
</body>
</html>

演習問題

  1. 上記のコードを使用して、ファイル作成し、動作するようにしてみよう。
  2. データベースやテーブルを変更し、違う情報を利用して、動作するようにしてみよう。