新規レコードの入力フォーム

MySQLを操作する

  1. HOME
  2. 新規レコード

新規レコードの入力フォームを作成

フォームのコード

<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>