• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:続々 入力・確認・登録に関して)

テキストエリア、チェックボックス、ラジオボタンを設置した際のデータ認識の問題

このQ&Aのポイント
  • テキストエリア、チェックボックス、ラジオボタンを設置した際、データを認識できずに登録ができない問題が発生しています。
  • confirm.phpの$bConfirm = array(ID=>TRUE....や、foreach($bConfirm as $value)....は、そのままなので、ラジオボタン、チェックボックスを装備していることが原因と思われます。
  • 調べているが、チェックボックスやラジオボタンに関する記事が見当たらないため、解決方法が分からない状況です。

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

  • ベストアンサー
  • Ikonos00
  • ベストアンサー率28% (86/302)
回答No.3

>「どれか1つだけチェックが入っていたらOK」 ポイントは、 $bConfirm[○○]=containsChar($_POST[○○]); で、未入力のチェックをしていて、 $bConfirm[○○]がTRUEになればOK。ということです。 なので、 containsChar($_POST[CHECK1]) containsChar($_POST[CHECK2]) containsChar($_POST[CHECK3])   ・   ・   ・ に1つでもTRUEがあれば、$bConfirm[CHEK_ALL]をTRUEにする。 というような記述をすればよいかと思います。 一番単純なのは、if文使って、 containsChar($_POST[CHECK1])らをORで連結した条件で、 分岐ですかね。

sadacha
質問者

お礼

Ikonos00様 こんばんは。お世話になっております。 すみません。。仰ってる意味は分かるのですが、何処をどう記述したら良いのかが分かりません。 ホントお恥ずかしい限りですが、ご教授頂けないでしょうか?お手数お掛けし申し訳ありません。 ちなみに、input.phpにあるチェックボックスの3つあり、nameはmy_renraku_mail、my_renraku_tel、my_renraku_faxとなっており、confirm.phpでの記述は、現在以下のようになっております。 $bConfirm[RENRAKU_MAIL] = containsChar( $_POST[RENRAKU_MAIL] ); $bConfirm[RENRAKU_TEL] = containsChar( $_POST[RENRAKU_TEL] ); $bConfirm[RENRAKU_FAX] = containsChar( $_POST[RENRAKU_FAX] ); Ikonos00様の仰るif文を使うと、 $bConfirm[RENRAKU_MAIL] = containsChar( $_POST[RENRAKU_MAIL] or $_POST[RENRAKU_TEL] or $_POST[RENRAKU_FAX]); となるのかな?などとも思っているのですが、他の$bConfirm[RENRAKU_TEL]、$bConfirm[RENRAKU_FAX]はどうしたら?などと…ホントお手数お掛けし申し訳ありません。

sadacha
質問者

補足

Ikonos00様 補足欄にて失礼いたします。 出来ました!何度もお手数お掛けし、申し訳ありませんでした。 Ikonos00様のような有識者からのアドバイスに感謝しております!有難う御座いました!

その他の回答 (2)

  • Ikonos00
  • ベストアンサー率28% (86/302)
回答No.2

>全て入力しても入力データを認識せず、「データが入っていない」と処理されてしまう ということは、ここ(↓)で、$nextPage = FALSE;が実行されているということで、 今回のポイントは、以下だと思います。 (1)definition.phpの設定  define( '○○', "△△"); (2)input.phpのフォームの要素のnameの値  <input type=\"text\" name=\"△△\" value=\"$■■\"> (3)$bConfirm[○○]=containsChar($_POST[○○]);で  $_POST[○○]に値が入っているか。(confirm.php) 予想されているとおり、チェックボックスやラジオボタンが怪しいと私も思います。

sadacha
質問者

お礼

Ikonos00様 出来ました!随時細かなご説明を有難う御座います! 結局のところ、Ilonos00様の回答にある、○○のことろで記述ミスが原因で先に進めなかったようです。お恥ずかしい限りでは御座いますが、ご指摘がなかったら見過ごしたままだったかと思います。有難う御座いました。 と、そこで追加?の質問なのですが、現状では全てのチェックボックスにチェックを入れなければならないのですが、「どれか1つだけチェックが入っていたらOK」というようにするには、どうしたら良いのでしょうか?引き続きご指導頂けたら幸いです。

  • Ikonos00
  • ベストアンサー率28% (86/302)
回答No.1

とりあえず、確認させてください。 現状は、confirm.phpの 「入っている」「入っていない」のif文で、 『「入っていない」にしかいかない』の認識で良いですか? また、 >confirm.phpの$bConfirm = array(ID=>TRUE....や、foreach($bConfirm as $value)....は、そのままなので、 についてですが、これは「そのまま同じように付け足した」ではなく「全く手を付けていない」ということですか? で、もしよろしければ、confirm.phpの このあたり(中略以外)を載せていただけるとありがたいです。(もしくは編集したところのみを) <html> <body> <?php //confirm.php session_start();//defineとの関係 require_once "definition.php"; //これにFALSEが入力されたら、アウト $bConfirm = array(TITLE=>TRUE, URL=>TRUE, MAIL=>TRUE); $nextPage = TRUE;//FALSE $bConfirm[TITLE] = containsChar( $_POST[TITLE] );// 下の方に自分で定義した関数 文字がはいっているか return "true" or "false" $bConfirm[URL] = containsChar( $_POST[URL] ); $bConfirm[MAIL] = containsChar( $_POST[MAIL] ); //フォームすべてに文字がはいっているか確認 foreach($bConfirm as $value){ if(!$value){ $nextPage = FALSE; } } 中略 //最後に入っていなくても入っていてもセッションに入れる…1 $_SESSION[URL] = $_POST[URL]; $_SESSION[TITLE] = $_POST[TITLE]; $_SESSION[MAIL] = $_POST[MAIL]; //文字が変数に入っているか判定する関数 function containsChar( $sPost ){ $bConfirm = TRUE; //$choppedChars = chop($sPost); if(!(isset($sPost)) || $sPost == "") { $bConfirm = FALSE; //スペース等を抜くchop関数 } return $bConfirm; } ?> </body> </html>

sadacha
質問者

補足

Ikonos00様 おはよう御座います。早速お返事いただいていたようで有難う御座います。少々長文になりそうなので、補足の欄から失礼いたします。 >『「入っていない」にしかいかない』の認識で良いですか? はい。if文が原因なのか、全て入力しても入力データを認識せず、「データが入っていない」と処理されてしまうのです。説明不足ですみません。 >これは「そのまま同じように付け足した」ではなく「全く手を付けていない」ということですか? サンプルでは3つほどのフォームから成り立っておりますが、テキストエリアやチェックボックス、ラジオボタンを追加し、現在計30ちょっとのフォームから成り立っているのですが、全て$bConfirm = array(TITLE=>TRUE, URL=>TRUE....のように、=>TRUEで記述しております。チェックボックスも=>TRUEも記述しているのですが、そのチェックボックスの数文だけ記述しているので、それが原因なのかな?などと初心者ながらに思って入るのですが…何をどうしたら分からない状況です。 それと私が追加で記述しているコードですが、隠すつもりではないのですが、先のも述べたように30少々の者から成り立っており、ココの補足欄では文字数が足りなく、表示させる事が出来ません。Ikonos00様も提示してくれたconfirm.php内の主要コードは、=>TRUEなど、チェックボックスなども表示の記述方法と一緒ですが、いちおうフォームの数だけ下記の$_SESSION[URL]....も記述している状況です。 説明不足なところは御座いますが、引き続きご指導頂ければ幸いです。宜しくお願い致します。

関連するQ&A

専門家に質問してみよう