← 完成版とシステムの改良へ戻る / ソース一覧へ
learning.php
このページはソースコードを表示するためのHTMLです。source_common/learning.php への直接リンクではないため,PHPスクリプトは実行されません。
<?php
// learning.php: 教材管理
session_start();
require_once __DIR__ . '/common/common.php';
$member = login_check();
if (!empty($_FILES['learning_file']['name'])) {
$original = basename($_FILES['learning_file']['name']);
$ext = pathinfo($original, PATHINFO_EXTENSION);
$save_name = date('YmdHis') . '_' . bin2hex(random_bytes(4)) . ($ext ? '.' . $ext : '');
move_uploaded_file($_FILES['learning_file']['tmp_name'], __DIR__ . '/learning_folder/' . $save_name);
$sql = 'INSERT INTO learning (name, file, change_name, modified) VALUES (:name, :file, :change_name, NOW())';
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':name', $_POST['name'], PDO::PARAM_STR);
$stmt->bindValue(':file', $original, PDO::PARAM_STR);
$stmt->bindValue(':change_name', $save_name, PDO::PARAM_STR);
$stmt->execute();
header('Location: learning.php');
exit();
}
$sql = 'SELECT * FROM learning ORDER BY modified DESC';
$stmt = $dbh->query($sql);
$learnings = $stmt->fetchAll();
?>
<!DOCTYPE html>
<html lang="ja">
<head><meta charset="UTF-8"><title>教材管理</title></head>
<body>
<h1>教材管理</h1>
<form action="" method="post" enctype="multipart/form-data">
<p>教材名:<input type="text" name="name" required></p>
<p>ファイル:<input type="file" name="learning_file" required></p>
<p><input type="submit" value="アップロード"></p>
</form>
<table border="1">
<tr><th>教材名</th><th>ファイル</th><th>登録日時</th><th>操作</th></tr>
<?php foreach ($learnings as $learning): ?>
<tr>
<td><?php echo h($learning['name']); ?></td>
<td><a href="learning_folder/<?php echo h($learning['change_name']); ?>"><?php echo h($learning['file']); ?></a></td>
<td><?php echo h($learning['modified']); ?></td>
<td><a href="delete.php?id=<?php echo (int)$learning['id']; ?>">削除</a></td>
</tr>
<?php endforeach; ?>
</table>
<p><a href="top_page.php">トップページへ戻る</a></p>
</body>
</html>