dポイントプレゼントキャンペーン実施中!

PHPの送信フォームについての質問です。プログラミング初心者です。現在、送信フォームを作成しています。「postでデータを受け取ったら、『○○受け付けました』と表示させ、指定したテキストファイルにそのコメントを書き込む」という動作をしたいです。また、データが空でも「送信」ボタンを押してない時は、「何も動作しない」ということにしたいです。ですが、ネットとかで調べてみると、条件分岐で「何もしない」という命令は、わざわざ出さなくていいと書いていました。ですが、何も命令文を書かないと、初めてphpファイルをブラウザで開いた時(つまりまだ何も入力・送信していない時)にエラーの表示が出てしまいます。どうすればいいでしょうか?いくら調べてもよくわかりません。どなたか教えて頂けると幸いです。

「PHPの送信フォームについての質問です。」の質問画像

A 回答 (2件)

もう一点、こういったコーディングの質問をされる場合は、スクショした画像ではなくテキストそのものをコピペすべきです。


画像では文字が潰れて何が書かれているか読みにくくなりますし、読めたとしてもそれを実際に動かして確認するにはいちいち一文字ずつキーボードから入力し直さなければならないので、それだけで回答が返ってくる可能性が格段に下がってしまいます。
    • good
    • 0

書かれた処理ですと、初回はPOSTデータ自体が存在しないにも関わらず


$comment = $_POST["comment"];
としているため、ここで Notice: Undefined index が出ますね。

とりあえず、$commentへのPOSTデータ代入はissetでチェックした中で行うことで Notice は出なくなります。
他に、同一のPHPファイル内で処理も表示も行うのであれば、主要な処理はHTMLを表示する前に行なっておいたほうが、結果によるその後の処理の振り分けなどが必要になった場合でも対応しやすいかと思います。

以下、一例です。

<?php
$result = 0;
if(isset($_POST['comment'])) {
$comment = trim($_POST['comment']);
if($comment != '') {
$result = file_put_contents('./data.txt', date('Y-m-d H:i:s'). " {$comment}". PHP_EOL , FILE_APPEND);
}
}
?>
<html>
<head>
<title>sample</title>
<meta charset='utf-8'>
</head>
<body>
<form action='<?=$_SERVER['SCRIPT_NAME']?>' method='post'>
入力欄
<p><input type='text' name='comment' value=''></p>
<p><input type='submit' name='submit' value='送信'></p>
</form>
<?=(isset($comment) && $comment != '' ? htmlspecialchars($comment). ($result === false ? 'を受け付けできませんでした' : 'を受け付けました') : '')?>
</body>
</html>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!