提出課題の内容変更


提出済み課題の一覧表示・変更・削除を行うため,task_list.phptask_edit.phptask_delete.php を作成します。

source_common/task_list.php

<?php
// task_list.php: 自分の提出状況
session_start();
require_once __DIR__ . '/common/common.php';
$member = login_check();

$sql = 'SELECT * FROM task WHERE member = :member ORDER BY modified DESC';
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':member', (int)$member['id'], PDO::PARAM_INT);
$stmt->execute();
$tasks = $stmt->fetchAll();
?>
<!DOCTYPE html>
<html lang="ja">
<head><meta charset="UTF-8"><title>提出状況確認</title></head>
<body>
<h1>提出状況確認</h1>
<table border="1">
<tr><th>課題名</th><th>ファイル</th><th>コメント</th><th>提出日時</th><th>操作</th></tr>
<?php foreach ($tasks as $task): ?>
<tr>
<td><?php echo h($task['name']); ?></td>
<td><a href="task_folder/<?php echo h($task['change_name']); ?>"><?php echo h($task['file']); ?></a></td>
<td><?php echo h($task['word']); ?></td>
<td><?php echo h($task['modified']); ?></td>
<td><a href="task_edit.php?id=<?php echo (int)$task['id']; ?>">変更</a> / <a href="task_delete.php?id=<?php echo (int)$task['id']; ?>">削除</a></td>
</tr>
<?php endforeach; ?>
</table>
<p><a href="top_page.php">トップページへ戻る</a></p>
</body>
</html>

source_common/task_edit.php

<?php
// task_edit.php: 提出課題の変更
session_start();
require_once __DIR__ . '/common/common.php';
$member = login_check();

$id = (int)($_GET['id'] ?? $_POST['id'] ?? 0);

if (!empty($_POST)) {
    $sql = 'UPDATE task SET name = :name, word = :word, modified = NOW() WHERE id = :id AND member = :member';
    $stmt = $dbh->prepare($sql);
    $stmt->bindValue(':name', $_POST['name'], PDO::PARAM_STR);
    $stmt->bindValue(':word', $_POST['word'] ?? '', PDO::PARAM_STR);
    $stmt->bindValue(':id', $id, PDO::PARAM_INT);
    $stmt->bindValue(':member', (int)$member['id'], PDO::PARAM_INT);
    $stmt->execute();
    header('Location: task_list.php');
    exit();
}

$sql = 'SELECT * FROM task WHERE id = :id AND member = :member';
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':id', $id, PDO::PARAM_INT);
$stmt->bindValue(':member', (int)$member['id'], PDO::PARAM_INT);
$stmt->execute();
$task = $stmt->fetch();
if (!$task) { header('Location: task_list.php'); exit(); }
?>
<!DOCTYPE html>
<html lang="ja">
<head><meta charset="UTF-8"><title>提出内容の変更</title></head>
<body>
<h1>提出内容の変更</h1>
<form action="" method="post">
    <input type="hidden" name="id" value="<?php echo (int)$task['id']; ?>">
    <p>課題名:<input type="text" name="name" value="<?php echo h($task['name']); ?>" required></p>
    <p>コメント:<textarea name="word" rows="5" cols="50"><?php echo h($task['word']); ?></textarea></p>
    <p><input type="submit" value="変更する"></p>
</form>
</body>
</html>

source_common/task_delete.php

<?php
// task_delete.php: 提出課題の削除
session_start();
require_once __DIR__ . '/common/common.php';
$member = login_check();

$id = (int)($_GET['id'] ?? 0);
if ($id > 0) {
    $sql = 'SELECT change_name FROM task WHERE id = :id AND member = :member';
    $stmt = $dbh->prepare($sql);
    $stmt->bindValue(':id', $id, PDO::PARAM_INT);
    $stmt->bindValue(':member', (int)$member['id'], PDO::PARAM_INT);
    $stmt->execute();
    $task = $stmt->fetch();
    if ($task) {
        $path = __DIR__ . '/task_folder/' . $task['change_name'];
        if (is_file($path)) { unlink($path); }
        $sql = 'DELETE FROM task WHERE id = :id AND member = :member';
        $stmt = $dbh->prepare($sql);
        $stmt->bindValue(':id', $id, PDO::PARAM_INT);
        $stmt->bindValue(':member', (int)$member['id'], PDO::PARAM_INT);
        $stmt->execute();
    }
}
header('Location: task_list.php');
exit();

変更・削除では,WHERE id = :id AND member = :member として,自分の提出物だけを対象にしています。


Copyright (c) 2014-2026 T.Kouya Laboratory @ Otemon Gakuin University. All rights reserved.