チェックボックスにチェックした場合エラーにならない方法

このQ&Aのポイント
  • 初心者によるチェックボックス作成でのエラー対処法を解説します。
  • フリーのメールフォームのチェックボックス作成について詳しく解説します。
  • チェックボックスにチェックしてもエラーが発生しない方法を紹介します。
回答を見る
  • ベストアンサー

チェックボックスにチェックした場合エラーにならない方法

プログラムは、ほぼ全く初心者なのですが、 フリーのメールフォームをダウンロードして、作りかえています。 http://cgis.biz/script_shop_mail/ PHPの書類があって、mail.phpと、conf.phpを一部さわりました。 メールフォームの一番下に、「注意事項」に同意する。という、チェックボックスを作りたくて、 下記のような記述を追加して、チェック項目は作れましたが... $html .= '<table>'."\n"; if($conf['show_check']) { $html .= '<tr>'."\n"; $html .= '<th>「注意事項」'.$mark[($conf['need_check'])].'</th>'."\n"; $html .= '<td><input type="checkbox" name="check" value="'.$C['check'].'" >「注意事項」に同意する。'."\n"; $html .= '</td>'."\n"; $html .= '</tr>'."\n"; } $html .= '</table>'."\n"; エラーメッセージ if(!$_POST['check']) { if($conf['show_check'] && $conf['need_check']) { $err .= '「注意事項」に同意する。にチェックをお願いします。<br>'; } } チェックボックスに、チェックしてもチェックしなくても、エラーメッセージが表示されてしまい、 送信できません。 チェックボックスにチェックした場合には、エラーメッセージが表示されないようにするには、 どうしたら良いのでしょうか。

  • PHP
  • 回答数2
  • ありがとう数4

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

  • ベストアンサー
  • masa6272
  • ベストアンサー率66% (93/140)
回答No.2

checkboxのvalueが""になっています。 PHPでは空文字列はboolとして解釈されるときには false になります。 checkboxのvalueに空文字列以外を設定するか、!$_POST['check']の代わりに!isset($_POST['check'])で聞いてみてください。

parakeet-1
質問者

お礼

ありがとうございます。 できました...感激です。。。 魔法みたいで、びっくりしました。 勉強になりました。 わからない事だらけなので、 初心者向けの本から、勉強していこうと思います。 本当に助かりました。ありがとうございます。

その他の回答 (1)

  • masa6272
  • ベストアンサー率66% (93/140)
回答No.1

チェックボックスは、form要素の中に書いてます? <form action="hoge.php" method="post"> チェックしてね <input type="checkbox" name="check" value="foo"> <input type="submit" value="押してね"> </form> みたいに。

parakeet-1
質問者

補足

今調べたら、mail.phpに、 $html .= '<form method="post" action="'.$this_pg.'">'."\n"; と記述してありました。 mail.phpのページを表示すると、HTMLは、 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>発注フォーム</title> </head> <body> ・(省略) ・ ・ <form method="post" action="mail.php"> ・(省略) ・ ・ <table> <tr> <td>※「ご利用ガイド」の<a href="note.html" target="_blank">「注意事項」</a>をご確認下さい。</td> </tr> </table> </div> </div> <br> <table> <tr> <th>「注意事項」<span id="attent">※</span></th> <td><input type="checkbox" name="check" value="" >「注意事項」に同意する。 </td> </tr> </table> </div> <br> <table> <tr> <td align="center"><input type="submit" name="confirm" value="確認" id="btn_l"></td> </tr> </table> </form> ・(省略) ・ ・ </body> </html> という風に書き出されているのですが...(長くなり、申し訳ありません) 「注意事項」に同意する。というチェックボックスにチェックしてもしなくても、エラーメッセージになります。 (次にくる確認画面に進めません) どうしたら良いのかわからず、困っています。 教えて頂けたら幸いです。

関連するQ&A

  • Checkboxでの注意事項認証

    始めまして。 困ってます・・分かる方ヒントでも頂けたら幸いです。 現在「CGI's」というフリーのショッピングカートを使って作成しています。お客様情報のテーブル内に、よくHP上であるようなcheckbox「注意事項に同意する」の項目を追加しようと思っているのですが、うまくいきません。初心者なもので、どこがおかしいかも検討がつきません。ご教授お願い致します。 下記のように書いています。 // 入力フォーム function UserForm() { global $CONF_BASIC; // Cookie取得 if($CONF_BASIC['cookie'] == 1) { $_COOKIE = CookieRead(); $_SHOW = showEscap($_COOKIE); }   ・   ・ $html .= '<tr>'."\n"; $html .= '<th>注意事項<span class="need_mark">※</span></th>'."\n"; $html .= '<td>'."\n"; $html .= '<input type="checkbox" name="u_check" value="'.$_SHOW['u_check'].'" >「注意事項」に同意する。<br />'."\n"; $html .= '<span class="small"><a href="../notice/index.html" target="_blank" class="pink">注意事項</a>をよく読み、同意された方はチェックを入れてください。</span>'."\n"; $html .= '</td>'."\n"; $html .= '</tr>'."\n"; /********** 入力情報チェック **********/ function ValueCheck() { $err_u = ''; $err_d = '';   ・   ・ // 注意事項 if($_POST['u_check'] == '') { $err_u .= '[注意事項]「注意事項」に同意する。にチェックが入っていません。<br />'; } // その他項目 function OtherForm() { global $CONF_BASIC;   ・   ・ elseif($CONF_BASIC['other_type'] == 'checkbox') { if($choose) { for($i = 0; $i < count($choose); $i++) { $other['form'] .= '<input type="checkbox" name="other" value="'.$choose[$i].'" /> '.$choose[$i]."\n"; } } } /********** Cookie **********/ function CookieSet() { $limit = time() + (60*60*24*30); // 30日   ・   ・ $cookie .= '"'.$_POST['u_check'].'",'; if(!setcookie(webcart,$cookie,$limit)) { putHTML(ErrorShow('Cookie Error')); exit; } } function CookieRead() { if(get_magic_quotes_gpc()) { $ptn1 = '/^\\\"/'; $ptn2 = '/\\\"$/'; } else { $ptn1 = '/^\"/'; $ptn2 = '/\"$/'; } list($c['u_check']) = explode(',',trim($_COOKIE['webcart'],',')); チェックを入れてもエラーになります。どこをどうしたらいいのでしょうか・・ よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • チェックボックスの使用

    PostgreSQL+PHP初心者です。 DBから登録者一覧を抽出し、CheckBoxでチェックしたものだけ 修正をします。 DBから抽出し、テーブルを作成するところまでは出来ました。 その後CheckBoxのチェック済みだけを修正する場合はどうすればいいですか? ↓現在のソースです。 <html> <head> </head> <body> <FORM NAME="form1" action="insert.php" method="post"> <? $hostname="svibm01"; $con = pg_connect("host=$hostname dbname=testdb user=testuser password=testuser"); if(!$con) { print "データベースに接続できませんでした.\n"; exit; } $sql = "select * from name"; $rtn = pg_exec($con, $sql); if(!$rtn) { print "テーブルの検索に失敗しました.\n"; pg_close($con); exit; } $m = pg_numrows($rtn); $n = pg_numfields($rtn); print "<table border>\n"; print "<tr>\n"; print "<th> </th>"; $i = 0; while($i < $n) { print "<th>".pg_fieldname($rtn, $i)."</th>\n"; $i++; } print "</tr>\n"; $j = 0; while($j < $m) { $i = 0; print "<tr>\n"; print "<td align=center><input type=checkbox name=check".pg_result($rtn, $j, $i)." value=".pg_result($rtn, $j, $i)."></td>"; while($i < $n) { print "<td align=center>".pg_result($rtn, $j, $i)."</td>\n"; $i++; } print "</tr>\n"; $j++; } pg_close($con); print "</table>"; ?> <br> <br> <input type="submit" name="add" value="追加" /> <input type="submit" name="upd" value="変更" /> </FORM> </body> </html>

    • 締切済み
    • PHP
  • チェックボックス、セレクトボックスの検索処理

    --------------------------------------------------------------- (x.html) プルダウンのプログラム nameはa ラジオボックスのプログラム nameはb プルダウンのプログラム nameはc <input type="submit" value="検索" style="width:100;height:25;"> --------------------------------------------------------------- ◆プルダウン1、チェックボックス、プルダウン2があり、 3つともセレクトし、実行すると3つとも当てはまるデータが抽出されますが 抽出されない場合の、「ありません」の文章をいれたいのです。試行錯誤して みても思い通りにいかず、どうやっていったらいいか分かりません。 ◆3つの質問のうち、2つセレクトされただけとか、1つセレクトされた だけでも検索可能(セレクトされたものに当てはまるデータを抽出) にしたいのですが、どういう感じでプログラム組めばいいのでしょうか? * 以下のPHPファイルだと、3つセレクトし、3つ当てはまるデータしか抽出できないです。 (2つセレクトすると、2つだけ当てはまるデータがあるのに抽出できない) -------------------------------------------------------------- (a.php) <?php $x = $_POST["a"]; $w = $_POST["b"]; $z = $_POST["c"]; $Data=file("data.txt"); for($i=0;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); $sey=$line[4]; $sei=$line[5]; $sel=$line[6]; if($x >= $sey){ if($w == $sei){ if($z == $sel){ print "<table><tr><td rowspan='5 width='180'>ID:000$line[0]<br><img src=data/$line[9] border='0'></td> <th width='100'>名前</th><td>$line[1]</td></tr>      ・      ・      ・ </table>"; }}}} ?> ---------------------------------------------------------------- ご教授宜しくお願いします。

    • 締切済み
    • PHP
  • チェックボックスが選択させない

    PHP smartyで4×6のチェックボックスのリストを表示しています。 しかし、上の2行(8つのチェックボックス)が、 初期表示から3分以上たたないと、選択できない状態になります。 ブラウザはIE6.0です。 原因が不明の状態です。どのようにすればよろしいでしょうか。 Mozilla Firefox2.0では正常に動作します。 <table border=0 class="tabledetails"> <{section name="index" loop=$data start="0" step="1" max="10"}> <tr> <th> <{$data[index].name_1}> </th> <td> <{if $data[index].name_1 <> '' }> <{if ($curentview == 'CHECK' or (($modeid == 'SERH1') or ($modeid == 'SERH2') or ($modeid == 'SERH3') or ($modeid == 'SERH4'))) }> <input type="hidden" name='code_<{$data[index].code_1}>' <{if $data[index].name_1_flg}>value='on'<{/if}> > <{if $data[index].name_1_flg}><img src="./images/reten.png" /><{/if}> <{else}> <input type="checkbox" name='code_<{$data[index].code_1}>' <{if $data[index].name_1_flg}>CHECKED<{/if}> > <{/if}> <{/if}> </td> <th> <{$data[index].name_2}> </th> <td> <{if $data[index].name_2 <> '' }> <{if ($curentview == 'CHECK' or (($modeid == 'SERH1') or ($modeid == 'SERH2') or ($modeid == 'SERH3') or ($modeid == 'SERH4'))) }> <input type="hidden" name='code_<{$data[index].code_2}>' <{if $data[index].name_2_flg}>value='on'<{/if}> > <{if $data[index].name_2_flg}><img src="./images/reten.png" /><{/if}> <{else}> <input type="checkbox" name='code_<{$data[index].code_2}>' <{if $data[index].name_2_flg}>CHECKED<{/if}> > <{/if}> <{/if}> </td> <th> <{$data[index].name_3}> </th> <td> <{if $data[index].name_3 <> '' }> <{if ($curentview == 'CHECK' or (($modeid == 'SERH1') or ($modeid == 'SERH2') or ($modeid == 'SERH3') or ($modeid == 'SERH4'))) }> <input type="hidden" name='code_<{$data[index].code_3}>' <{if $data[index].name_3_flg}>value='on'<{/if}> > <{if $data[index].name_3_flg}><img src="./images/reten.png" /><{/if}> <{else}> <input type="checkbox" name='code_<{$data[index].code_3}>' <{if $data[index].name_3_flg}>CHECKED<{/if}> > <{/if}> <{/if}> </td> <th> <{$data[index].name_4}> </th> <td> <{if $data[index].name_4 <> '' }> <{if ($curentview == 'CHECK' or (($modeid == 'SERH1') or ($modeid == 'SERH2') or ($modeid == 'SERH3') or ($modeid == 'SERH4'))) }> <input type="hidden" name='code_<{$data[index].code_4}>' <{if $data[index].name_4_flg}>value='on'<{/if}> > <{if $data[index].name_4_flg}><img src="./images/reten.png" /><{/if}> <{else}> <input type="checkbox" name='code_<{$data[index].code_4}>' <{if $data[index].name_4_flg}>CHECKED<{/if}> > <{/if}> <{/if}> </td> </tr> <{/section}> </table>

  • テーブル行のクリックでチェックボックスの制御

    テーブル行をクリックしたときにその行にあるチェックボックスのON/OFFを 制御したいと思います。 Jqueryで以下サンプルを作成してみました。該当行をクリックするとチェックボックスが ONになったりOFFになったりするのですがチェックボックス自体をクリックするとうまく チェックがONになりません。恐らくチェックボックスをクリックした時はONになっていて、 同時に行をクリックしたとみなされONになっているチェックボックスをOFFにしているのでは ないかと思われます。 チェックボックスをクリックしてもON/OFFがうまくいくようにするためにはどうすればよろしいでしょうか 【サンプル】 <html> <head> <meta charset="UTF-8" /> <script type="text/javascript" src="../jquery-1.6.1.min.js"></script> <script type="text/javascript"> $(function(){ $("#nameTable tr").click(function() { //alert($(data).find(":checkbox").val()); var chk = $(this).find(":checkbox"); if(chk.prop("checked")) { chk.attr("checked", false); } else { chk.attr("checked", true); } }); }); </script> <title>CSS</title> <style type="text/css"> </style> </head> <body bgcolor="rgba(255,0,0,0.15)"> <table id="nameTable" border="1"> <tr><th>名前</th><th>チェックボックス</th></tr> <tr><td>あいうえお</td><td><input type="checkbox" value="1"></td></tr> <tr><td>かきくけこ</td><td><input type="checkbox" value="2"></td></tr> <tr><td>さしすせそ</td><td><input type="checkbox" value="3"></td></tr> <tr><td>たちつてと</td><td><input type="checkbox" value="4"></td></tr> <tr><td>なにぬねの</td><td><input type="checkbox" value="5"></td></tr> </table> </body> </html>

  • PHPで返信メールにチェックボックスの値を表示したいのですが。。。

    PHPで返信メールにチェックボックスの値を表示したいのですが。。。 PHP初心者です。 request.phpという資料請求用のWEBページを作成しており、お問い合わせ項目内に 以下の様なチェックボックスを設けました。 <tr> <th>ご希望される商品</th> <td> <input type="checkbox" name="kibo[]" value="a-set" /> Aセット<br /> <input type="checkbox" name="kibo[]" value="b-set" /> Bセット<br /> <input type="checkbox" name="kibo[]" value="c-set" /> Cセット<br /> <input type="checkbox" name="kibo[]" value="d-set" /> Dセット </td> </tr> 入力後の内容確認画面では、 <tr> <th>ご希望される商品:</th> <td class="subheader_txt_l"><?php echo implode(' / ', $_POST['kibo']);?></td> </tr> として、選択した項目が表示されるところまではできましたが、送信ボタン後、確認メールが 送られてくる仕組になっているのですが、メール本文内では【ご希望される商品】欄が空っぽで 返ってきます。。。 ちなみにメール本文作成の処理では、 $body .= '【氏名】        '.$_POST['name1']."\n". '【メールアドレス】   '.$_POST['mail']."\n". '【住所】        '.$_POST['zyuusyo']."\n". '【ご希望される項目】  '.$_POST['kibo']."\n". '【お問い合わせ内容】  '.$_POST['comment']."\n\n". 値取得にあたり特別な関数が必要なのでしょうか。 ご教授頂けますと幸いです。よろしくお願いします。

    • ベストアンサー
    • PHP
  • チェックボックスの入力チェック

    フォームメール用のCGIを作成しているのですが、チェックボックスの入力チェックをCGIでおこないたい場合、どのようにすればよいのでしょうか? 複数選択可で1つも選択されていない場合エラーメッセージを出すようにしたいと思っており、チェックボックスには1個づつ個別の変数を用意しています。 if ($name eq "") { print "Content-type: text/html;charset=euc-jp\n\n"; print "お名前を入力してください。"; exit(0); } テキストボックスはこのように入力チェックをおこなっています。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • テーブル上のチェックボックスにチェックがされない

    データベースからメール送信履歴を検索し、結果をリスト表示しようとしています。 Ajax通信をして結果をJsonで受け取っています。 送ったか否かは「sendF」に書かれており、「0」なら未送信、「1」なら送信済みです。 「sendF」が「1」ならチェックボックスにチェックを入れようと思って 以下のコードを書きました。 でも、テーブル上のチェックボックスにはチェックが入りません。 console.logで数値が「1」を確認していますが、表示がされません。 どこが悪いか教えて頂けるとうれしいです。 よろしくお願いします。 $.ajax({ type: "POST", url: "../SendList.php", data: {"condition":condition}, // Webサーバに送信するデータ dataType: 'text', // Webサーバか受信するデータの形式 success: function(request){ // ajax通信が成功したときの処理 var json = JSON.parse(request); var res = ''; for (var i = 0; i < json.length; i++){ res += '<tr>' + '<td style="text-align: center;">' + json[i].personId + '</td>' + '<td style="text-align: center;">' + json[i].personName + '</td>' + '<td style="text-align: center;">' + '<input type="checkbox" id="sendF[' + i + ']" name="sendF" />' + '</td >' + '<td style="text-align: left;>' + '<input type="text" id="memo" name="memo" value="' + json[i].memo + '" />' + '</td >' + '</tr>'; if(json[i].sendF == 1){ $('#sendF[' + i + ']').prop('checked', true); console.log("1でした"); } } var obj = document.getElementById("datatable"); obj.innerHTML ='<tr><th>担当者ID</th><th>担当者名</th><th>送信F</th><th>メモ</th></tr>' + res; }, error: function(msg){ // ajax通信が失敗したときの処理 alert( "Data Saved: " + msg ); } });

  • phpのフォームでエラーが出ます

    php初心者です。 ↓の参考サイトを参考にフォームを作ってみましたが、 ローカルサーバーでテストしてみると、inquiry.phpの最後の行(?>)に エラーがある旨のメッセージが出てしまい、 原因がわからず困っております。 どなたかおわかりになる方がいらっしゃいましたら、 よろしくお願いします。 【参考サイト】 http://php.frogstone.jp/inquiry/inquiry.php 【プログラムの構造】 index.html(メインプログラム) sendEnd.html(送信完了ページ) inquiry.php 【index.html】 <div id="form_main"> <?php echo($tagErr); ?> <form action="inquiry.php" method="post"> <input name="mode" type="hidden" value="send" /> <div class="hiss"> <p>※印は必須項目です。</p> </div> <table> <tr> <th scope="row">お名前<b class="hiss">※</b></th> <td><input type="text" name="name" value="" class="m" id="name"/></td> </tr> <tr> <th scope="row">会社名</th> <td><input type="text" name="company" value="" class="m" id="company"/></td> </tr> <tr> <th scope="row">お電話番号<b class="hiss">※</b></th> <td><input type="text" name="tel" value="" class="" id="tel"/></td> </tr> <tr> <th scope="row">メールアドレス<b class="hiss">※</b></th> <td><input type="text" name="mail" value="" class="" id="mail"/></td> </tr> <tr> <th scope="row">お問い合わせ内容<b class="hiss">※</b></th> <td><textarea name="naiyo" cols="10" rows="10" class="L" id="naiyo"></textarea></td> </tr> </table> <div class="align_c"><input type="submit" name="submit" value="確認画面へ進む" class="input-b"/></div> </form> </div> 【inquiry.php】 <?php #設定 $adminMail = "test@test.com"; #データの受け取り foreach($_REQUEST as $key => $value) { $value = mb_convert_kana($value,"rkv"); $FORM[$key] = $value; } #フォームから送信された場合 if($FORM["mode"] == "send") { #入力エラーチェック $flgErr = true; $tagErr = ""; if($FORM["name"] == "") { $flgErr = false; $tagErr = "<li>お名前をご記入ください。</li>\n"; } if($FORM["mail"] == "" && $FORM["tel"] == "") { $flgErr = false; $tagErr .= "<li>お電話番号かメールアドレスをご記入ください。</li>\n"; } if($FORM["naiyo"] == "") { $flgErr = false; $tagErr .= "<li>お問い合わせ内容をご記入ください。</li>\n"; } #入力エラーがあれば if(!$flgErr) { #エラーメッセージ設定 $tagErr = '<p><img src="../common/enterErr.jpg"></p><ul>'.$tagErr.'</ul>; #入力エラーがなければ } else { #管理者にメール送信 mb_language("japanese"); $subject ="お問い合わせがありました。"; $message .="お問い合わせ内容。\n\n"; $message .="お名前 :".$FORM["name"]."\n"; $message .="会社名 :".$FORM["company"]."\n"; $message .="電話番号 :".$FORM["tel"]."\n"; $message .="メールアドレス :".$FORM["mail"]."\n"; $message .="お問い合わせ内容\n".$FORM["naiyo"]."\n"; mb_send_mail($adminMail,$subject,$message,"From:".#adminMail); #完了ページへ移動 header("Location:http://localhost/test/contact/sendEnd.html"); } ?>

    • 締切済み
    • PHP
  • 1ページで2つのフォームをチェックしたいのですが…

    1つのページに同じ項目のフォームを2つ作りました。 そしてそれにチェックを設けたいと思いフォームチェックのスクリプトを入れてみました。 が、しかし、、 上のフォームはチェックが動くのですが、 下のフォームは何を入れてもチェックがエラー検出をして 次のページに進めなくなってしまいます。。 こちらはどのようにしたら両方のチェックが働きつつ 次のページに値を渡せるのでしょうか? 正しい書き方を教えてください。 よろしくお願いします。 <html> <head> <script language="JavaScript"> <!-- // 入力チェック function chkInputForm() { Error = new Array(); i = 0; // お客様の業種入力チェック if (document.forms[0].elements["part"].selectedIndex == 0) { Error[i] = "[ 1・2の選択 ] は必須項目です。"; i++; } // 会社(事務所)のご住所入力チェック if (document.forms[0].elements["pref"].selectedIndex == 0) { Error[i] = "[住まい] は必須項目です。"; i++; } // 未入力があればアラート if (Error.length > 0) { ErrorText = Error.join("\n"); alert ("以下の項目は必須です。\n\n"+ErrorText); return false; } return true; } //--> </script> </head> <body> <form action="inquiry.php" method="post" onsubmit="return chkInputForm()"> <table class="table" summary="お問合せテーブル"> <tbody><tr> <th>1か2</th> <td> <select name="part" style="width: 200px;"> <option value="0">---ご選択下さい---</option> <option value="1">1</option> <option value="2">2</option> </select> </td> </tr> <tr> <th>住まいは</th> <td> <select name="pref" style="width: 200px;"> <option value="0">---ご選択下さい---</option> <option value="1">日本</option> <option value="2">海外</option> </select> </td> </tr> </tbody></table> <input class="iepng" name="button" value="送信" type="submit"> </form> <form action="inquiry.php" method="post" onsubmit="return chkInputForm()"> <table class="table" summary="お問合せテーブル"> <tbody><tr> <th>1か2</th> <td> <select name="part" style="width: 200px;"> <option value="0">---ご選択下さい---</option> <option value="1">1</option> <option value="2">2</option> </select> </td> </tr> <tr> <th>住まいは</th> <td> <select name="pref" style="width: 200px;"> <option value="0">---ご選択下さい---</option> <option value="1">日本</option> <option value="2">海外</option> </select> </td> </tr> </tbody></table> <input class="iepng" name="button" value="送信" type="submit"> </form> </body> </html>

専門家に質問してみよう