• ベストアンサー

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

チェックボックスにチェックを入れて送信したときは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

  • チェックボックスのデータの受け取り方について

    以下のようなチェックボックスを作ったとき、 test.phpではどうやって受け取ればよいのでしょうか? nameがそれぞれ違う場合は分かるのですが... 教えてください。 <form method="POST" action="test.php"> <input type="checkbox" name="color" value="red">赤</input> <input type="checkbox" name="color" value="blue">青</input> <input type="checkbox" name="color" value="white">白</input> <input type="checkbox" name="color" value="black">黒</input> <input type="submit" value="送信" > </form>

    • ベストアンサー
    • PHP
  • チェックボックスの内容が送信出来ません。

    PHPのメールフォームにチェックボックスを追加しましたがうまく送れず頭を抱えています。 お力をお貸しください。 必要だと思われるソースです。 inquiry.html <form action="check_inquiry.php" method="POST"> <p><label for="title">お名前:</label> <input type="text" name="title" size="60"> </p> <p><INPUT type="checkbox" name="check[]" value="資料請求" />資料請求<INPUT type="checkbox" name="check[]" value="至急" />至急<INPUT type="checkbox" name="check[]" value="質問" />質問</p> <br /> <p><label for="massage">メッセージ:</label></p> <p><textarea name="message" cols="50" rows="20"></textarea></p> <p><input type="submit" value="内容の確認"></p> </form> check_inquiry.php <?php $title = htmlspecialchars($_POST['title'], ENT_QUOTES); $message = htmlspecialchars($_POST['message'], ENT_QUOTES); $m_check = $_POST['check']; ?> ■内容を確認してください。 <br> <form action="send_inquiry.php" method="POST"> <input type="hidden" name="title" value="<?php echo $title; ?>" /> <input type="hidden" name="message" value="<?php echo $message; ?>" /> <input type="hidden" name="check" value="<?php for($i=0; $i<sizeof($m_check); $i++){ echo "【${m_check[$i]}】"; } ?>" /> <br /> お名前: <br /> <?php echo $title; ?> <br /> 問い合わせ内容: <?php for($i=0; $i<sizeof($m_check); $i++){echo "【${m_check[$i]}】"; }; ?> <br /> メッセージ詳細: <br /> <?php // 改行部分にBRタグを埋め込む echo nl2br($message); ?> <br /> <input type="submit" value="お問い合わせ内容の送信"> </form> send_inquiry.php <?php $title = htmlspecialchars($_POST['title'], ENT_QUOTES); $message = htmlspecialchars($_POST['message'],ENT_QUOTES); $m_check = $_POST['check']; //日本語UTF8 mb_language('ja'); mb_internal_encoding('UTF8'); //自動送信<送信元のアドレス $name = '自動送信'; $email = 'メールアドレス'; $header = 'From: '. mb_encode_mimeheader($name) . '<' . $email .'>'; // メール送信 $result = mb_send_mail($email, $title, $message, $header, $m_check); //メール送信の確認 if ($result) { // メール送信の成功 echo '■管理人へ送信しました。'; } else { // メール送信の失敗 echo '■管理人への送信に失敗しました。'; } ?> チェックボックスにチェックを入れないと送信出来ますが チェックを入れると送信に失敗します。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • HTMLフォームで複数選択のチェックボックスの値をまとめてから送信したい

    下のようなフォームがあります。 <form method="get" action="" >  <input type="checkbox" name="item" value="1">item1</input>  <input type="checkbox" name="item" value="2">item2</input>  <input type="checkbox" name="item" value="3">item3</input>  <input type="submit" value="送信" /> </form> これで例えばすべてのチェックボックスをチェックして送信した場合、 ?item=1&item=2&item=3 となりますが、これを ?item=1,2,3 とする方法はありますでしょうか? 都合により、method="get"の部分は変えられず、受け取ってからの処理(value値を配列にして受け取ってから展開するなど)も変更できません。 ご教授いただけると助かります。

    • ベストアンサー
    • PHP
  • 送信後のチェックボックスの表示

    最初の画面でAにチェックされているとします。 そのあとに、AとBをチェックしたあとにSubmitで送信します。 送信したあとに、AとBにチェックした最初の画面を表示させたいときは、 どんな風にすればよいのでしょうか。 今は・・・ If Request.Form="" <input type="checkbox" name="test" value="A" checked>A <input type="checkbox" name="test" value="B">B <input type="checkbox" name="test" value="C">C Else Select Request.Form("test") Case "A" <input type="checkbox" name="test" value="A" checked>A <input type="checkbox" name="test" value="B">B <input type="checkbox" name="test" value="C">C Case "B" <input type="checkbox" name="test" value="A">A <input type="checkbox" name="test" value="B" checked>B <input type="checkbox" name="test" value="C">C Case "C" <input type="checkbox" name="test" value="A">A <input type="checkbox" name="test" value="B">B <input type="checkbox" name="test" value="C" checked>C   ・・・ End Select End If というように、全ての場合のときに"checke"をつけて表示させています。 もっと、効率のよい書き方はないものでしょうか?

  • 一つのformで、複数のaction指定

    レイアウトなどの関係で、formの配置が基本とは異なるものになってしまい、うまく動作させる方法が見つからず困っています。 現在は <form> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> </form> …… <form method="POST" action="A.php"> <input type="submit" name="aa" value="あああ"> </form> <form method="POST" action="B.php"> <input type="submit" name="bb" value="いいい"> </form> <form method="POST" action="C.php"> <input type="submit" name="cc" value="ううう"> </form> <form method="POST" action="D.php"> <input type="submit" name="dd" value="えええ"> </form> のようになっていて、チェックボックスの値を送信したいのは、Dのボタンを押したときだけPOSTされるようにしたい状態です。 この値を取得する方法か、もしくは <form method="POST" action="(ボタンに応じたもの)"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> …… <input type="submit" name="aa" value="あああ"> <input type="submit" name="bb" value="いいい"> <input type="submit" name="cc" value="ううう"> <input type="submit" name="dd" value="えええ"> </form> このように、一つのフォームの中に埋めてしまい、actionに入る値をボタンによって分ける方法はありませんでしょうか? もしくは他の方法でも構いません。 お分かりの方がいましたら、是非ご教授お願いいたします。

    • 締切済み
    • PHP
  • チェックボックスのうちひとつでもチェックがなければエラー

    チェックボックスが複数個(5~6個)あります。 hajime.html <form action="niban.php" method="post"> <input type="checkbox" value="A" name="CHK1" /> <input type="checkbox" value="B" name="CHK2" /> <input type="checkbox" value="C" name="CHK3" /> <input type="checkbox" value="D" name="CHK4" /> <input type="checkbox" value="E" name="CHK5" /> <input type="checkbox" value="F" name="CHK6" /> </form> ●このA~Fのうち、ひとつでもチェックされていなければ チェックしてください。とエラー表示させたいのですが… ●次のページではこのようにデータを受取していします。 niban.php// フォームの値取得は下記のように行っています。 if ($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v); $v = addslashes($v); $$k = $v; } } else { exit(); } $ErrFlg = 0;(エラーの時は$ErrFlgを1にします) ●エラー構文のサンプル↓ if ($name == "" ) { echo "<p>名前を入力してください。"; $ErrFlg = 1; } どうぞお力をおかしください

    • 締切済み
    • PHP
  • チェックボックスの初期選択と選択保持

    複数のチェックボックスのうちどれかを初期選択させ、ボタン押下後は選択保持をさせたいです。 片方のみならできるのですが、どなたかご教授いただけるとうれしいです。 現在のソースはこんな感じになっていて選択したものの保持はできるのですが、初期選択ができていません。よろしくおねがいします。 <html> <body> <form name="form" method="post"> <?php test1() ?> test1 <?php test2() ?> test2 <?php test3() ?> test3<br><br> <input type="submit" name="button" value="button"> </form> <?php function test1(){ if ($_POST['test1']){ echo "<input type=\"checkbox\" name=\"test1\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test1\">"; } } function test2(){ if ($_POST['test2']){ echo "<input type=\"checkbox\" name=\"test2\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test2\">"; } } function test3(){ if ($_POST['test3']){ echo "<input type=\"checkbox\" name=\"test3\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test3\">"; } } ?> </body> </html>

    • 締切済み
    • PHP
  • チェックボックスのvalueを連結してURLに追加

    <form method="get" action="<?php = $_SERVER['PHP_SELF']; ?>"> <input type="checkbox" name="c" value="001" /> <input type="checkbox" name="c" value="002" /> <input type="checkbox" name="c" value="003" /> <input type="checkbox" name="c" value="004" /> <input type="checkbox" name="c" value="005" /> <input type="submit" value="送信" /> </form> submitするとURLに ?c=001&c=002&c=003… が追加されます。 その形ではなく、c=001002003… と連結してURLに追加するにはどうしたら良いですか?

    • 締切済み
    • PHP
  • 入力フォーム→確認画面→送信画面でのチェックボックスの値について質問で

    入力フォーム→確認画面→送信画面でのチェックボックスの値について質問です。 1、入力フォーム(form.html) <form name="form" action="confirm.php" method="post"> <input type="checkbox" name="week[]" value="月" checked >月 <input type="checkbox" name="week[]" value="火" checked >火 <input type="checkbox" name="week[]" value="水" checked >水 <input type="submit" value="入力内容を確認する"> </form> 2、確認画面(confirm.php) <form action="insert.php" method="post"> if( isset( $_POST['traffic'] )) {   for( $i = 0; $i < count( $_POST['traffic'] ); $i++ ) {     print $_POST['traffic'][$i]."<br />";   } } <input type="button" value="内容を修正する" onClick="JavaScript:history.back()">; <input type="submit" value="この内容で送信する"> </form> 表示例) 月 水 3、送信完了画面(insert.php) 「送信完了しました。」と表示。 ここでDB登録、内容のメール送信を行いますが、 DBに登録する際、 月、水をそのまま登録するのではなくて 月→true 火→false 水→true とチェックされたものを「true」 チェックされなかったものを「false」とINSERTするにはどうすればできますか? true,falseで登録するのはあとで集計しやすくするためです。 DB構成は(MySQL5x) mon BOOL tue BOOL wed BOOL

    • ベストアンサー
    • PHP
  • チェックボックスのチェックについて

    submit時に一つでもチェックがなければアラートを表示 チェックがあれば進む・・・としたいです。 <form action=next.html name=form1> <input type=checkbox name=checkbox1 value=1> <input type=checkbox name=checkbox2 value=2> <input type=checkbox name=checkbox3 value=3> <input type=checkbox name=checkbox4 value=4> <input type=checkbox name=checkbox5 value=5> ~以下50まで続きます <input type=submit value=submit> </form> function countChecked(form1) { var total = 0; var max = 50; for (var index = 0; index < form1.checkbox.length; index++) { total += form1.checkbox[index].checked ? 1 : 0; } if(countChecked(document.form1)) > 0) { return true; } else { alert("no"); return false; } return(total); } 過去に似たような質問を参考に作ってみましたがダメでした。 チェックボックスの名前の付け方が悪いのでしょうか。

このQ&Aのポイント
  • 生命保険と任意保険の違いは何でしょうか?生命保険は入院保険金や手術保険金を受け取っても月々の掛金は変わりませんが、車などの任意保険は支払い事項があると月々の掛金が上がってしまいます。
  • なぜなのでしょうか?任意保険は、不可抗力の事故などに備えているのかもしれませんが、保険を使った場合でも掛金が上がらないことを希望するのは自然な感情です。
  • しかし、何事もなければ双方の保険は月々の支払いを続けるだけで済みます。掛金が上がるのは任意保険だけです。なぜなのでしょうか?
回答を見る

専門家に質問してみよう