- ベストアンサー
チェックボックスでの送信
チェックボックスにチェックを入れて送信したときは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); ?>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 $flg = isset ( $_POST['flg'] ) ? $_POST['flg'] : 0; こうすれば$_POST['flg']がない場合は0が入ります。
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
そもそも「選ばれていないのが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>
お礼
ありがとうございます。 ラジオボタンなら簡単にできるのは分かります。 今回はチェックボックスでやるというのが条件なのでラジオボタンの件は参考にさせていただきます。
- gachamuk
- ベストアンサー率34% (28/81)
test.php側で、IF文を使って処理してみてはいかがでしょうか? 具体的には、チェックボックスにチェックを入れない場合は、 $flg変数を空として判定するといった感じでしょうか。 簡単に書くと 例: <?php if($flg != ""){ print($flg); }else{ print("チェックなし"); } ?> みたいな感じです。 私の手元にはPHPの実行環境がないので 実際に動くかどうかは分かりませんが、 確認してみてください。
お礼
if($_POST['flg'] == null){ $flg = 0; }else{ $flg = $_POST['flg']; } print($flg); こんな風に$_POST['flg']がnullであるか判定しようとしましたが、 そもそもチェックが入っていない場合、$_POST['flg']で得ようとするflgが フォームから送られてきてないため、undefinedとなりエラーに困っていました。
お礼
まさにこれでした!issetと条件演算子ですね。動作確認もできました。 セットされているかどうかの判定を以下のようにしようとすると $_POST['flg']の時点でflgがundefinedとエラーになって困っていました。 if($_POST['flg']==null){ }