• ベストアンサー

チェックボックスでの送信

チェックボックスにチェックを入れて送信したときは1を チェックを入れずに送信したときは0をPHP側で受けたいのですが チェックを入れずに送信するとPHP側で$_POST['flg']を取得できないため、エラーになります。 方法はないでしょうか? <form action="test.php" method="post"> フラグ:<input type="checkbox" name="flg" value="1" /> </form> === test.php =========== <?php $flg = $_POST['flg']; print($flg); ?>

質問者が選んだベストアンサー

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 $flg = isset ( $_POST['flg'] ) ? $_POST['flg'] : 0; こうすれば$_POST['flg']がない場合は0が入ります。

testmaster_x
質問者

お礼

まさにこれでした!issetと条件演算子ですね。動作確認もできました。 セットされているかどうかの判定を以下のようにしようとすると $_POST['flg']の時点でflgがundefinedとエラーになって困っていました。 if($_POST['flg']==null){ }

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

そもそも「選ばれていないのが0」という考え方が間違っています。 どうしても0を得たいならラジオボタンを使うべきです <form action="test.php" method="post"> フラグ:<input type="radio" name="flg" value="0" checked>0 <input type="radio" name="flg" value="1">1 </form>

testmaster_x
質問者

お礼

ありがとうございます。 ラジオボタンなら簡単にできるのは分かります。 今回はチェックボックスでやるというのが条件なのでラジオボタンの件は参考にさせていただきます。

  • gachamuk
  • ベストアンサー率34% (28/81)
回答No.2

test.php側で、IF文を使って処理してみてはいかがでしょうか? 具体的には、チェックボックスにチェックを入れない場合は、 $flg変数を空として判定するといった感じでしょうか。 簡単に書くと 例: <?php if($flg != ""){ print($flg); }else{ print("チェックなし"); } ?> みたいな感じです。 私の手元にはPHPの実行環境がないので 実際に動くかどうかは分かりませんが、 確認してみてください。

参考URL:
http://temping-amagramer.blogspot.com/2008/10/phpcheckbox1.html
testmaster_x
質問者

お礼

if($_POST['flg'] == null){ $flg = 0; }else{ $flg = $_POST['flg']; } print($flg); こんな風に$_POST['flg']がnullであるか判定しようとしましたが、 そもそもチェックが入っていない場合、$_POST['flg']で得ようとするflgが フォームから送られてきてないため、undefinedとなりエラーに困っていました。

関連するQ&A