※ ChatGPTを利用し、要約された質問です(原文:<?php)
PHPでのデータベース登録時の入力チェックと表示メッセージについて
このQ&Aのポイント
PHPでのデータベース登録時に入力チェックを行い、エラーメッセージを表示する方法と、登録が成功した場合に表示するメッセージを作成する方法について教えてください。
また、質問文章のコードにはいくつかの問題があります。フォームのaction属性が空であるため、データがどのURLに送信されるかが不明です。さらに、一部のエラーメッセージが間違った変数名を参照していたり、生年月日の入力チェックが正しく行われていないように見えます。
修正したい箇所と、データベースへの登録が成功した場合に表示するメッセージの作成方法を教えてください。
<?php
if (isset($_POST['reg']) && isset($_POST['reg'])) {
$ErrFlg = false;
// 氏名欄をチェック
$first_name = $_REQUEST['first_name'];
$last_name = $_REQUEST['last_name'];
if (!trim($first_name) || trim($last_name) == '') {
$_POST['err_name_req'] = '氏名が入力されておりません。<br />';
$error = TRUE;
} else {
unset($_POST['err_name_req']);
}
// 生年月日欄をチェック
$b_year = $_REQUEST['b_year'];
$b_month = $_REQUEST['b_month'];
$b_day = $_REQUEST['b_day'];
if (!trim($b_year) || trim($b_month) || trim($b_day) == '') {
$_POST['err_birthday_req'] = '生年月日が入力されておりません。<br />';
$error = TRUE;
} else {
unset($_POST['err_birthday_req']);
}
if (checkdate($b_month, $b_day, $b_year) === false) {
$_POST['err_birth_ereg'] = '生年月日が正しくありません。<br />';
$error = TRUE;
} else {
unset($_POST['err_birth_ereg']);
}
}
?>
<html>
<body>
<form action="<?php $_SERVER["PHP_SELF"]; ?>" method="POST">
氏名<br />
<?php print $_POST['err_name_req']; ?><br />
<input type="text" name="first_name" value="<?php print $first_name; ?>" /><input type="text" name="last_name" value="<?php print $last_name; ?>" /><br />
生年月日<br />
<?php print $_POST['err_birth_req'].$_POST['err_birth_ereg']; ?><br />
<input type="text" name="b_year" value="<?php print $b_year; ?>" size="5" />年
<input type="text" name="b_month" value="<?php print $b_month; ?>" size="2" />月
<input type="text" name="b_day" value="<?php print $b_day; ?>" size="2" />日 <br />
<input type="submit" name="reg" value="登録" />
</form>
</body>
</html>
としています。
登録ボタンを押した際に入力チェックされることがなければデータベースに登録したいのですが、どこに記述してよいのか困っています。
また、どのように記述したらよろしいでしょうか?
イメージとしては登録ボタンを押したら、「登録しました。」というコメントだけが表示されるようにしたいのですが・・・
javascriptの使用は考えておりませんので、できればPHPでお願いいたします。
もしお分かりの方がいらっしゃいましたらご教授いただけないでしょうか?
また上記の内容でおかしいところがありましたらご指摘いただけないでしょうか?