※ ChatGPTを利用し、要約された質問です(原文:プログラムがちゃんと動作しません。)
PHPでお店の情報をデータベースに書き込むプログラムが動作しない
このQ&Aのポイント
最近始めたPHPの勉強で、お店の情報をデータベースに書き込むプログラムを作成していますが正常に動作しません。入力チェックをしたときにエラーメッセージを表示することができず、困っています。
form.phpというファイルからPOSTで送られた値をチェックし、すべての項目が記入されていれば確認のページにジャンプする仕組みです。しかし、記入漏れがあるとエラーメッセージが表示されず、入力した値が反映されない状態です。
この問題について、文法や設定に問題がある可能性があります。お手数ですが、間違っている部分を指摘していただけると助かります。
最近PHPの勉強をはじめました。
今お店の情報をデータベースに書き込むPHPを作成しています。
概要としては、form.phpからinputで入力された値をPOSTでform.htmlに送りそれぞれの項目の記入忘れがないかをチェックし、すべて記入されていれば確認のページへジャンプするというページを作成しています。
入力チェックをしたときに、記入忘れの項目を指摘し、ちゃんと入力するようにメッセージを表示するようにしたいのですが、何も表示されずに困っています。(記入忘れがあるときはすでに入力したものがフォームに入力されたままの状態になるようにしたいと重いinputにはvalueを設定しています)
form.phpは以下のように記述されています。
form.php-----------------------------------------------------------
<?php
$error_message = array();
$listname = array(
"tenmei" => "店名",
"tenmei_y" => "店名のよみがな",
"zipcode" => "郵便番号",
"address" => "住所",
"address_y" => "住所の読み仮名",
"tel" => "電話番号"
);
if (isset($_POST["regist"])) {
foreach($_POST as $key => $val){
if (isset($val)) {
$value[$key] = "$val";
} else {
$i = $listname["$val"];
$error_message[] = "$iを入力して下さい";
}
}
}
$tenmei = $value[tenmei];
$tenmei_y = $value[tenmei_y];
$zipcode = $value[zipcode];
$address = $value[address];
$address_y = $value[address_y];
$tel = $value[tel];
?>
<HTML>
<BODY>
<?php
if (count($error_message)) {
foreach ($error_message as $message) {
print ($message<br>);
}
}
print <<<eot
<form method="POST" action="form.php">
店名:<input type="text" name="tenmei" value="$tenmei"><br>
店名のよみがな:<input type="text" name="tenmei_y" value="$tenmei_y"><br>
郵便番号:<input type="text" name="zipcode" value="$zipcode"><br>
住所:<input type="text" name="address" value="$address"><br>
住所のよみがな:<input type="text" name="address_y" value="$address_y"><br>
電話番号:<input type="text" name="tel" value="$tel"><br>
<input type="submit" name="regist" value="入力完了">
</form>
eot;
?>
-------------------------------------------------------------------
まだ、入力チェックすらできない状態なので、ちゃんと入力した場合に確認のページへジャンプする機能はまだつけていません。
情報が不足している部分がありましたら補足いたします。
文法が間違っている部分がたくさんあるかもしれませんが
その部分を指摘していただけたら幸いです。
どうかご教授のほどよろしくおねがいします。
お礼
2度目の回答ありがとうございます。 そうですね、一つ一つエラーを表示していけば確実ですね。 項目が実際には30個近くまで増えるのらしいので何とかあとの編集がラクになるようなプログラムが書きたかったのですが、私のプログラムはまだまだ、勉強をはじめたばかりなのにちょっと欲張りすぎてしまった感じがしますね(>_<) 30個なのでその方法で行くことにします。 ありがとうございました!