• ベストアンサー

続 入力・確認・登録に関して

お世話になっております。先日、本タイトルと同じ質問 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2201856 をさせてもらった者ですが、先日の質問を引き続き進めている状況です。 先日は、良き有識者の回答を得る事が出来、問題は解決したのですが、またもや問題に遭遇してしまいました… input.php内において、チェックボックス、およびラジオボタンを設置した場合の一連の処理は どのようにしたら宜しいのでしょうか?現段階で、確認をした際、未入力のあった場合に最初の画面に戻ったとき、チェックボックスおよびラジオボタンで選択したものが正常に作動しないのです。 丸投げのようで恐縮いたしますが、下記のような通常?のPOSTの受渡しを参考に、色々とコード変えてはいるのですが、なかなか思うように解決する事が出来ません。 お手数をお掛けし申し訳ありませんが、ご指導いただければ幸いに思います。 echo <<<EOD if($my_kaiin == "1"){$a01 = "selected";} if($my_kaiin == "会員"){$a02 = "selected";} if($my_kaiin == "非会員"){$a03 = "selected";} echo " <p> <select name=\"my_kaiin\">\n <option value=\"1\" $a01>-選択-</option>\n <option value=\"会員\" $a02>会員</option>\n <option value=\"非会員\" $a03>非会員</option>\n </select>\n "; EOD; echo <<<EOD f($my_gyoutai == "法人"){$c01 = "checked";} if($my_gyoutai == "個人"){$c02 =" checked";} echo "<input type=\"radio\" name=\"my_gyoutai\" value=\"法人\" $c01>法人\n &nbsp;&nbsp; <input type=\"radio\" name=\"my_gyoutai\" value=\"個人\" $c02>個人\n "; EOD;

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

  • ベストアンサー
回答No.2

ヒアドキュメントの使い方については、検索エンジンや書籍を参考にしていただくとして、とりあえず 2箇所ずつある「echo <<<EOD」と「EOD;」の行を削除しましょう。 これで、ヒアドキュメントを使わないコードになります。 f($my_gyoutai == "法人"){$c01 = "checked";}の先頭の「f」を「if」に直しましょう。 これで、希望される動作は実行可能です。 ただし、最初に戻る処理で値がちゃんとPOSTされており、そのPOSTデータ が$my_kaiin、$my_gyoutaiにセットされている必要がありますが。 選択項目が多い場合は、 if($my_kaiin == "1"){$a01 = "selected";} if($my_kaiin == "会員"){$a02 = "selected";} if($my_kaiin == "非会員"){$a03 = "selected";} の様な処理を関数として定義してしまえば、楽です。 要は、POSTされたデータと value で定義した値が等しければ、 " checked" または " sected" を書き出すという処理を考えてみてください。

sadacha
質問者

お礼

kaiwarepon様 お手数お掛けし申し訳ありません。 まずはご挨拶を・・と思ったのですが、報告も兼ねてご挨拶したかったので返信が遅れてしまいました。 で、報告ですが、お蔭様をもちまして無事解決する事が出来ました。幾度もお時間を頂戴してしまいましたが解決できた事にお礼申しあげます。有難う御座いました!

その他の回答 (2)

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

条件分岐に漢字のパラメータ渡しはコード変換 などめんどうがつきものですので辞めた方が いいでしょう。英数に統一なさるとよいかと。 またヒアドキュメントのほうが入力ミスを防ぎやすい ので、そちらで統一なさってください。 また同じ変数をifで沢山処理するのは冗長です。 switchするのも手ですが、命題のような構文であれば 配列で解決できると思います。 また受け渡しのパラメータは$_GETや$_POSTで おこなうようにしてください。 (仮にそのまま受け渡しができたとしても) 以上を踏まえると以下のようなコードになります。 参考までに // 会員->kaiin,非会員->hikaiin,法人->houjin,個人->kojin $selected[$_GET["my_kaiin"]]="selected"; $checked[$_GET["my_gyoutai"]]="checked"; echo <<<EOD <select name="my_kaiin"> <option value="1" $selected[1]>-選択-</option> <option value="kaiin" $selected[kaiin]>会員</option> <option value="hikaiin" $selected[hikaiin]>非会員</option> </select> <input type="radio" name="my_gyoutai" value="houjin" $checked[houjin]>法人 &nbsp;&nbsp; <input type="radio" name="my_gyoutai" value="kojin" $checked[kojin]>個人 EOD;

sadacha
質問者

お礼

yambejp様 こんにちは。お世話になっております。 英数で記述ですか・・確かに、今回の件とは別ですが、DBからの検索をする際、保存されているデータが日本語だと上手く表示出来なかった事がありました。これと同じ事なのでしょうか? 兎にも角にも、無事解決できた事をご報告し、貴重なアドバイスに感謝いたしております。有難う御座いました。

回答No.1

各POST値が確実にそれぞれの変数にセットされているという前提で...。 選択されている項目に"checked"や"selected"を入れるという趣旨としては概ね間違いはない(細かなところは除いて)のですが、ヒアドキュメント(echo <<< EOD ~ EOD;)の書き方が間違っています。 ヒアドキュメントで書く必要がないというか、ヒアドキュメントを外してしまえばうまくいくと思います。

sadacha
質問者

お礼

kaiwarepon様 おはよう御座います。お休みの中、朝からの回答を有難う御座います。 ヒアドキュメントですか…先日の質問内にてinput.phpファイルがありますが、そのファイルは殆どが通常のhtmlタグにて記述してあります。例えばテキストエリアなどは、textarea name="my_naiyou" cols="35" rows="12">$naiyou_txt</textarea>のように設置しております。 浅はかというか…要はスキル不足なのですが、html内(拡張子php)において、"checked"や"selected"などを入れる構文とやらが分からずに試行錯誤を繰り返しております。

関連するQ&A