新規レコードの入力フォームを作成
フォームのコード
<form method="POST" action="insertData.php">
<ul>
<li><label>登録番号:
<input type="number" name="number" placeholder="登録番号">
</label></li>
<li><label> 名前:
<input type="text" name="name" placeholder="名前">
</label></li>
<li><label> 登録期:
<input type="number" name="reg" placeholder="登録期">
</label></li>
<li><label> 支部:
<input type="text" name="branch" placeholder="所属支部">
</label></li>
<li><input type="submit" value="追加する"></li>
</ul>
</form>
データベース追加コード
<?php
require_once("../common/es.php");
$backURL = "classicForm.php";
if (!checkEn($_POST)) { //エンコードチェック
header("Location:{$backURL}");
exit();
}
//簡単なエラー処理
$errors = [];
if (!isset($_POST['number']) || (!ctype_digit($_POST["number"]))) {
$errors[] = "登録番号には数値を入れてください";
}
if (!isset($_POST['name']) || ($_POST['name'] === "")) {
$errors[] = "名前が空です";
}
if (!isset($_POST['reg']) || (!ctype_digit($_POST["reg"]))) {
$errors[] = "登録期には数値を入れてください";
}
if (!isset($_POST['branch']) || ($_POST['branch'] === "")) {
$errors[] = "所属支部が空です";
}
//エラーがあったとき
if (count($errors) > 0) {
echo '<ol class="error">';
foreach ($errors as $value) {
echo "<li>", $value, "</li>";
}
echo "</ol>";
echo "<HR>";
echo "<a href=", $backURL, ">戻る</a>";
exit();
}
//データベース
require_once("../common/es.php"); //PHPのフォーム~入力データのチェック~で参照してね
$user = '****';
$passwoed = '****';
$dbName = 'kyotei';
$host = 'localhost:8888';
$dsn = "mysql:host={$host};dbname={$dbName};charset=utf8";
?>
<!doctype html>
<html lang="ja">
・・・・↓↓
<?php
$number = $_POST["number"];
$name = $_POST["name"];
$reg = $_POST["reg"];
$branch = $_POST["branch"];
try {
$pdo = new PDO($dsn, $user, $passwoed);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO classic2022 (number, name, reg, branch) VALUES (:number, :name, :reg, :branch)";
$stm = $pdo->prepare($sql);
$stm->bindValue(':number', $number, PDO::PARAM_INT);
$stm->bindValue(':name', $name, PDO::PARAM_STR);
$stm->bindValue(':reg', $reg, PDO::PARAM_INT);
$stm->bindValue(':branch', $branch, PDO::PARAM_STR);
if ($stm->execute()) {
//レコードの表示
$sql = "SELECT * FROM classic2022"; //SQL文を作る
$stm = $pdo->prepare($sql); //プリペアドステートメントを作る
$stm->execute(); //SQL文を実行
$result = $stm->fetchAll(PDO::FETCH_ASSOC); //結果の取得(連想配列で受け取る)
echo "<table border=1>";
echo "<tr>";
echo "<th>", "登録番号", "</th>";
echo "<th>", "選手名", "</th>";
echo "<th>", "登録期", "</th>";
echo "<th>", "支部", "</th>";
echo "</tr>";
foreach ($result as $row) {
echo "<tr>";
echo "<td>", es($row['number']), "</td>";
echo "<td>", es($row['name']), "</td>";
echo "<td>", es($row['reg']), "</td>";
echo "<td>", es($row['branch']), "</td>";
echo "</tr>";
}
echo "</table>";
} else {
echo '<span class="error">追加エラーがありました</span><br>';
};
} catch (Exception $e) {
echo '<span class="error">エラーがありました</span><br>';
echo $e->getMessage();
}
?>
<HR>
<p><a href="<?php echo $backURL ?>">戻る</a></p>