データの編集画面
追加:
<th>ID</th><th>テスト名</th><th>学年</th><th>学期</th><th>タイプ</th><th>編集</th>
echo("<td><a href=\"#\">編集</a></td>");
エスケープシーケンスで""の中に\"\"を入れる。
リンクを張ります。こういう風に。
<a href=\"tests_form.php?t_id={$row["t_id"]}\">編集</a>
[#IMAGE|a0396706_09222286.png|202001/30/06/|mid|1291|511#]

テスト登録画面も登録/編集になる
冒頭で分岐
urlについてきたやつを:t_idに格納
無害化:
$t_name=htmlspecialchars($row["t_name"],ENT_QUOTES);
外から来たのは必ずhtmlspecialcharsする
これを付け足す
この中にデータベースの1番の内容などをechoしたい
なおfor文の「)」を閉じ忘れたとき出たエラー
Parse error: syntax error, unexpected '{', expecting ')' in C:\xampp\htdocs\php\makino\school\tests_form.php on line 59
<?php for ($i=1;$i<=3;$i++) : ?>
<label>
<?php echo $i; ?>年<input type="radio" name="grade" id="grade<?php echo $i; ?>" value="<?php echo $i; ?>">
</label>
<?php endfor; ?>
for文の{}を使わない書き方
: つづく
endfor おしまい
駒井コナン君が解決してくれた。ありがたい。
これが必要だった
<?php
if(empty($_GET["t_id"])){
//insert
$title="作成";//
$t_name="";//これを入れてないとエラーが出る
$grade="";
$term="";
$type="";
ここまで
--->tests_form.php
<?php
if(empty($_GET["t_id"])){
//insert
$title="作成";//
$t_name="";//これらを入れてないとエラーが出る
$grade=0;
$term=0;
$type=0;
$background="<div class=\"insert\">";
}else{
//edit
$title="編集";
$background="<div class=\"edit\">";
$user = "root";
$pass = "";
$host = "localhost";
$dbname="school";
$dsn="mysql:host={$host};dbname={$dbname};charset=utf8";
$pdo= new PDO($dsn,$user,$pass);
$sql="SELECT * FROM tests WHERE t_id=:t_id";
$stmt=$pdo->prepare($sql);
$stmt->bindValue(":t_id",$_GET["t_id"],PDO::PARAM_INT);
$stmt->execute();
$row=$stmt->fetch(PDO::FETCH_ASSOC);
$t_name=htmlspecialchars($row["t_name"],ENT_QUOTES);
$grade=$row["grade"];
$term=$row["term"];
$type=$row["type"];
if($row==1){
$gradechk[]="checked=\"checked\"";
}
}
$typeArr = ["","中間","期末","その他"];
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>テストの<?php echo $title ?></title>
<link rel="stylesheet" href="css/style.css">
<script src="../jquery-3.4.1.min.js"></script>
</head>
<body>
<?php echo $background ?><!--div-->
<div id="container">
<h1>テストの<?php echo $title ?></h1>
<form action="insert_t.php" method="post">
<!--4行2列-->
<table>
<tr>
<th><label for="t_name">テスト名</label></th>
<td><input type="text" name="t_name" id="t_name" value="<?php echo $t_name; ?>"></td>
</tr>
<tr>
<th>学年</th>
<td>
<?php for ($i=1;$i<=3;$i++) : ?>
<label>
<?php echo $i; ?>年
<?php if($grade == $i): ?>
<input type="radio" name="grade" id="grade<?php echo $i; ?>" value="<?php echo $i; ?>" checked="checked">
<?php else : ?>
<input type="radio" name="grade" id="grade<?php echo $i; ?>" value="<?php echo $i; ?>">
<?php endif ?>
</label>
<?php endfor; ?>
</td>
</tr>
<tr>
<th>学期</th>
<td>
<?php for ($i=1;$i<=3;$i++) : ?>
<label>
<?php echo $i; ?>学期
<?php if($term == $i) : ?>
<input type="radio" name="term" id="term<?php echo $i; ?>" value="<?php echo $i; ?>" checked="checked">
<?php else : ?>
<input type="radio" name="term" id="term<?php echo $i; ?>" value="<?php echo $i; ?>"
<?php endif ?>
</label>
<?php endfor; ?>
</td>
</tr>
<tr>
<th>テストの種類</th>
<td>
<?php for ($i=1;$i<=3;$i++) : ?>
<label>
<?php echo $typeArr[$i] ?>
<?php if($type == $i): ?>
<input type="radio" name="type" id="type<?php echo $i; ?>" value="<?php echo $i; ?>" checked="checked">
<?php else: ?>
<input type="radio" name="type" id="type<?php echo $i; ?>" value="<?php echo $i; ?>"
<?php endif; ?>
</label>
<?php endfor; ?>
</td>
</tr>
</table>
<p><button type="submit">登録</button></p>
</form>
<p id="msg"></p>
</div>
</div>
<script src="js/form.js"></script>
</body>
</html>
--->insert_t.php
<?php
//デバック用の関数
print_r($_POST);//どっちの記述でもよろしい
if(empty($_POST["t_name"])
||empty($_POST["grade"])
||empty($_POST["term"])
||empty($_POST["type"])){
header("Location:tests_form.php");
exit();
}else{
//PDOでデータベースへの登録
//まず基本の4セット
$user = "root";
$pass = "";
$host = "localhost";
$dbname="school";
//データソースネーム
$dsn = "mysql:host={$host};dbname={$dbname};charset=utf8";
//PDOを生成
$pdo= new PDO($dsn, $user, $pass);
print_r($_POST);
/*
$sql="INSERT INTO tests(t_name,grade,term,type) VALUES (:t_name,:grade,:term,:type)";
$stmt = $pdo->prepare($sql);//こんがり。
$stmt->bindValue(":t_name",$_POST["t_name"],PDO::PARAM_STR);
$stmt->bindValue(":grade",$_POST["grade"],PDO::PARAM_INT);
$stmt->bindValue(":term",$_POST["term"],PDO::PARAM_INT);
$stmt->bindValue(":type",$_POST["type"],PDO::PARAM_INT);
$stmt->execute();
header("Location: tests_list.php");
exit();
*/
}
?>