やりたいことを見ると、3種類の結果を求めていると思います。
- 寿司にチェックボックスが入っているなら「寿司です」と表示すること
- 寿司にチェックボックスが入っていないなら「違います」と表示すること
- 最初にページを開いた時には何も表示しない
なので結果として、「寿司です」、「違います」、何も表示しない
の3パターンを設定しなければなりません。
質問者さんの状態では、寿司です、違います、の2パターンしか存在しないので
どちらかしか出ない…という状況です。
質問者さんのPHPコードでは、
$_POST['fooda'] が宣言されていれば True そうでなければ False を返します。
ページを最初に開いた時点では当然、$_POST['fooda'] は宣言されていないので False を返します。
PHPコードの中身はそのページが開かれた時点で必ず実行されますので、
このコードのままでは当然、「違います」が表示されてしまいます。
送信ボタンが押されているかどうかのチェックを追加する
まず、送信ボタンによってこのページが開かれたかどうかを判定させる必要があります。
最初にこのページを開いたときは送信ボタンが押されていない時なので、
それを判断基準に使えば条件が作れるのではないでしょうか。
その為にまず送信ボタンに名前を付けましょう。
html
1<h2>好きな食べものは?</h2>
2<form method="post" action="suki.php">
3 <input type="checkbox" name="fooda" value="寿司"> 寿司
4 <input type="checkbox" name="foodb" value="天ぷら"> 天ぷら
5 <input type="checkbox" name="foodc" value="芸者"> 芸者
6 <input type="submit" name="submit_button" value="送信">
7</form>
質問者さんのHTMLの送信ボタンに「submit_button」という名前を付けました。
こうすることで送信した後のデータ…
$_POST['submit_button'] に 送信 という文字列が格納されます。
まずはこれが宣言されているかどうかを判定します。
そしてこの条件をクリアしてきた場合は送信ボタンを押しているはずなので、
そこから$_POST['fooda']が宣言されているかどうかをチェックします。
php
1// if(isset($_POST['submit_button'])){ 皆様のご助言により訂正
2if($_SERVER['REQUEST_METHOD'] == 'POST'){
3 if(isset($_POST['fooda'])) {
4 echo "寿司です<br>";
5 } else {
6 echo "違います<br>";
7 }
8}
このコードの場合、$_POST['submit_button']が宣言されていない = 送信ボタンが押されていない、
となるので、送信ボタンが押されていない場合はそもそも寿司なのかそうでないのかの判定を無視します。
有り体に言えばなにも表示されません。
ただ、選択がチェックボックス形式で特に質問に言及されていなかったのであれですが、
寿司にチェックボックスが入っていさえすれば「寿司です」と表示されます。
寿司だけにチェックボックスがあれば「寿司です」と表示するコードではないのでお気を付けください。
追記・寿司のみが選択されている場合を条件にする時
以下のコードの場合、寿司のみが選択されている時しかTrueになりません。
あくまで一例です。
html
1<h2>好きな食べものは?</h2>
2<form method="post" action="suki.php">
3 <input type="checkbox" name="food[]" value="寿司"> 寿司
4 <input type="checkbox" name="food[]" value="天ぷら"> 天ぷら
5 <input type="checkbox" name="food[]" value="芸者"> 芸者
6 <input type="submit" name="submit_button" value="送信">
7</form>
php
1//if(isset($_POST['submit_button'])){
2if($_SERVER['REQUEST_METHOD'] == 'POST') {
3 if(isset($_POST['food']) && count($_POST['food']) == 1 && $_POST['food'][0] == "寿司") {
4 echo "寿司です<br>";
5 } else {
6 echo "違います<br>";
7 }
8}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/20 21:37
退会済みユーザー
2020/08/21 04:21
2020/08/21 23:55
退会済みユーザー
2020/08/23 12:04
2020/08/23 23:22