• ベストアンサー

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

お世話になっております。先日、本タイトルと同じ質問 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;

  • PHP
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
回答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

  • リストから遷移後、詳細画面のフォームにDBから読んだ値をセットしたい

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=2170989 の続きです。回答くださったLancerVIIさんの方法で遷移した後、 各個人の詳細情報を表示する画面を作ったのですが、これは更新画面を兼ねています。 ここでDBから読み込んだ値を、ドロップダウンメニューやラジオボタンの 値としてセットしたいです。 ■イメージ (1) 会員ID(id):[ 1022 ] (2) 氏名(simei):[ 田中一郎 ] (3) 会員種別(syubetu):[  A  ]▼(ABCのドロップダウンリスト) (4) 都道府県(address):[ 大阪府 ]▼(47都道府県のドロップダウンリスト) (5) 性別(seibetu):◎男 ○女(男か女のラジオボタン) 氏名などは<input type="text" value="$simei">などと流し込めば良さそうかと 想像していますが、上でいう、(3)~(5)に適切な値をセットするのに 適切な値をセットするようにするにはどのような方法がありますか? 下記のように、読み込まれた値に応じてIF分岐すれば、できなくも なさそうですが、(4)(=47都道府県)の場合は47回も分岐しなければ ならなくなります。 if($syubetu == 'A'){   echo "<input type="radio" value="A" selected>";   echo "<input type="radio" value="B">";   echo "<input type="radio" value="C">"; }elseif($syubetu == 'B'){   echo "<input type="radio" value="A">";   echo "<input type="radio" value="B" selected>";   echo "<input type="radio" value="C">"; }else{   echo "<input type="radio" value="A" >";   echo "<input type="radio" value="B">";   echo "<input type="radio" value="C"selected>"; }

    • ベストアンサー
    • PHP
  • PHP

    HTML文ですが、これをPHPでループで回して無駄なコーディングを直したい。 どうしたらいいですか? <select name="nhour"> <option value="0" <?php if($nhour == '0') echo"selected"; ?>>0</option> <option value="1" <?php if($nhour == '1') echo"selected"; ?>>1</option> <option value="2" <?php if($nhour == '2') echo"selected"; ?>>2</option> <option value="3" <?php if($nhour == '3') echo"selected"; ?>>3</option> <option value="4" <?php if($nhour == '4') echo"selected"; ?>>4</option> <option value="5" <?php if($nhour == '5') echo"selected"; ?>>5</option> </select>

    • ベストアンサー
    • PHP
  • PHP

    PHPで無駄なコーディングをしない為、ループでまわしたいのですが関数が入り、ややこしくなっています。どうしたらいいですか? <select name="nminute"> <option value="0" <?php if(strstr($nminute,'0')) echo"selected"; ?>>0</option> <option value="1" <?php if(strstr($nminute,'1')) echo"selected"; ?>>1</option> <option value="2" <?php if(strstr($nminute,'2')) echo"selected"; ?>>2</option> <option value="3" <?php if(strstr($nminute,'3')) echo"selected"; ?>>3</option> <option value="4" <?php if(strstr($nminute,'4')) echo"selected"; ?>>4</option> <option value="5" <?php if(strstr($nminute,'5')) echo"selected"; ?>>5</option> <option value="6" <?php if(strstr($nminute,'6')) echo"selected"; ?>>6</option> <option value="7" <?php if(strstr($nminute,'7')) echo"selected"; ?>>7</option> <option value="8" <?php if(strstr($nminute,'8')) echo"selected"; ?>>8</option> <option value="9" <?php

    • ベストアンサー
    • PHP
  • htmlで入力したテキストがうまく表示されない

    お世話になります。 HTML初心者のものです。 卒業論文のアンケートに、webページを使いたいと思っていて、現在勉強しながらプログラミングを開始したところです。 しかし、 ●Q1.あなたの年齢を教えてください - プルダウンメニューで回答してもらう ●Q2.あなたの肌質を教えてください - ラジオボタンで回答してもらう という構造を頭の中で思い描いていたのですが、以下のようにhtmlを打っても、プルダウンメニューとラジオボタンの間の文章が表示されません。 初歩的な質問だとは思うのですが、先へ進めなくて困っているのでご教示頂けると幸いです。 【以下自分が打ったhtml】 <p>Q1.あなたの年齢を教えてください。</p><br> <form> <select name="knenrei"> <option value="1">18</option> <option value="2" selected>19</option> <option value="3" selected>20</option> <option value="4" selected>21</option> <option value="5" selected>22</option> <option value="6" selected>23</option> <option value="7" selected>24</option> <option value="8" selected>選択してください</option> </form><br> <p>Q2.あなたの肌質を教えてください。</p><br> <form> <input type="radio" name="khadashitu" value="binkan">敏感肌 <input type="radio" name="khadashitu" value="kansou">乾燥肌 <input type="radio" name="khadashitu" value="shisei">脂性肌 </form><br> ※補足……年齢のプルダウンメニューにおいて、最後に「選択してください」という項目を置いているのは、少しでも回答漏れを防ぐことと、回答漏れなのかきちんと回答がされたものなのかを区別するためです。

    • ベストアンサー
    • HTML
  • 入力画面→確認画面→入力画面に戻った時のデータの保持方法を

    入力画面→確認画面→入力画面に戻った時のデータの保持方法を 教えてください(携帯サイト作成) 下記の2点の場合は、どのようにすればよいでしょうか? ★ <select name="hour" class="required"> <?php for($j=18; $j<=24; $j++){ ?> <option value="<?php echo $j; ?>"><?php echo $j;?> </option> <?php } ?> <?php for($k=1; $k<=5; $k++){ ?> <option value="<?php echo $k; ?>">翌朝<?php echo $k; ?> </option> <?php } ?> </select> ★ <input type="radio" name="use" checked value="0">初めて <input type="radio" name="use" value="1">ある どなたか、よろしくお願いします。

    • ベストアンサー
    • PHP
  • 新規登録を常に表示させる事はできますでしょうか。

    フリーのPHPの更新履歴を使わせていただいてます。先日ご質問しまして解決したのですが、また分からない事が・・すみません。 管理画面で通常は「新規登録」ボタン。編集ボタンを押すと「編集登録」「キャンセル」ボタンが表示されます。 //-------------------------------------------- if (!$delete_sw){ if ($fix){$button_name = "編集登録";}else{$button_name = "新規登録";} echo " <input name='Submit_data' type='submit' value='".$button_name."'>"."\n"; if ($fix){ echo " <input name='cancel' type='submit' value='キャンセル'>"."\n"; echo " <input name='fix' type='hidden' value='true'>"."\n"; echo " <input name='radio' type='hidden' value='".$radio."'>"."\n"; } //------------------------------------------------ 編集のとき「新規登録」ボタンも表示させて「編集登録」「新規登録」のどちらでも選べるようにしたいのですが「編集登録」「新規登録」の表示は出来ても、どちらのボタンを押しても「新規登録」されてしまったりします。下のこの辺りも設定が必要でしょうか? // データの登録/////////////// function regist_data_r1(){ global $fix,$radio,$page_r1; if ($fix && $radio){ //編集登録 fix_data_r1(); $fix = ""; }else{ //新規登録 new_data_r1(); $page_r1 = ""; } } ///////////////////// 初心者で分かり辛いご質問ですみません。宜しくお願い致します。 スクリプトはこちらのものを使わせていただいてます。 http://www.hot-dining.com/free_cgi/webturn-plus.php

    • 締切済み
    • PHP
  • cgi の入力チェック

    ***** HTML ***** <TD> <INPUT type="radio" name="ABC_*" value="登録する">登録する  <INPUT type="radio" name="ABC_*" value="登録しない">登録しない </TD> ***** CGI ***** $family = "ABC"; if($name eq "$family"){ $family=$value; } 現在、上記のような記述で作っているのですが、 チェックを入れても、入れなくても、「入力エラー」 になりません。 他の項目については、OKなんですが。。。 どのように、入力チェックをすればいいのですか? **ちなみに、OKな項目の記述です。** ***** HTML ***** <TD>登録カテゴリー:</TD> <TD> <select name="カテゴリー_*"> <option value="" selected>選  択 <option value="自動車関連">自動車関連 <option value="お役立ちサイト">お役立ちサイト <option value="HP作成支援">HP作成支援 <option value="お店のHP">お店のHP <option value="個人のHP">個人のHP <option value="その他">その他 </select></TD> ***** CGI ***** $catego = "カテゴリー"; if($name eq "$catego"){ $catego=$value; }

    • ベストアンサー
    • CGI
  • 確認ページからフォームページに「戻る」時の入力内容の保持

    ラジオボタンと連動したチェックボックスがあります。 ラジオボタンを選択し、さらにチェックボックスに入力後、「確認」をクリックして確認ページから「戻る」の時にチェックボックスの入力内容の値が保持されておらず、困っています。 Firefoxではきちんと動作するのですが、IEなど他のブラウザでは動作しません。 入力内容を保持する方法はありますでしょうか? <script> window.onload=function(){ var f0=document.getElementById("f0"); try{ f0.addEventListener("click",function(e){func(e)},true); }catch(e){ f0.attachEvent("onclick",function(e){func(e)}); } } function func(e){ var obj= (e.srcElement || e.target); if(obj.nodeName!="INPUT") return false; switch(obj.type){ case "radio": setRadio(obj); break; case "checkbox": setCheckbox(obj,"シルク","Kind04[]","SELECT"); break; } } function setRadio(obj){ var n=obj.parentNode.firstChild; while(n){ if(n.nodeName=="INPUT" && n.type=="checkbox"){ n.disabled=obj.value!="アリ"; n.checked=false; } if(n.nodeName=="SELECT"){ n.disabled=true; n.selectedIndex=0; } n=n.nextSibling; } } function setCheckbox(obj,v,n,nn){ if(obj.value!=v) return false; var node=obj.parentNode.firstChild; while(node){ if(node.nodeName==nn && node.name==n){ node.disabled=!obj.checked; node.selectedIndex=0; } node=node.nextSibling; } } </script> </head> <body> <form action="./postmail.cgi" name="f0" method="post" id="f0"> <fieldset> <legend>■分類</legend> <input type="radio" value="ナシ" name="print" class="print" checked>ナシ <input type="radio" value="アリ" name="print" class="print" >アリ  ( <input type="checkbox" value="銀シールド" name="Kind04[]" class="Kind04" disabled>銀シールド <input type="checkbox" value="銀ペースト" name="Kind04[]" class="Kind04" disabled>銀ペースト <input type="checkbox" value="銅ペースト" name="Kind04[]" class="Kind04" disabled>銅ペースト <input type="checkbox" value="シルク" name="Kind04[]" class="Kind04" disabled>シルク  色 <SELECT name="Kind04[]" class="Kind04" disabled> <OPTION SELECTED VALUE="---">--- <OPTION VALUE="白">白 <OPTION VALUE="黒">黒 <OPTION VALUE="他">他 </SELECT> ) </fieldset><br> <input type="submit" value="確認する" />  <input type="reset" value="リセット" /> </form> </body> </html>

  • 検索時の選択内容を保持する方法 2

    昨日こちらのURL『http://okwave.jp/qa/q6477112.html』にて質問させていただきました。 ご回答を締め切らせていただいたため、誠に勝手ながら新たに質問の方させていただきました。 PHP検索フォーム、検索時の選択内容を保持する方法にて、先日ご回答いただいた 下記のコードを基本として利用しているのですが、 <? //checkbox if($_REQUEST["test_a"]=="1") $checked["test_a"]=" checked"; if($_REQUEST["test_b"]=="1") $checked["test_b"]=" checked"; //radio if(isset($_REQUEST["test_c"])) $checked["test_c"][$_REQUEST["test_c"]]=" checked"; //select if(isset($_REQUEST["test_d"])) $selected["test_d"][$_REQUEST["test_d"]]=" selected"; print <<<eof <form> <input type="checkbox" name="test_a" value="1"{$checked["test_a"]}>A <input type="checkbox" name="test_b" value="1"{$checked["test_b"]}>B <input type="radio" name="test_c" value="1"{$checked["test_c"][1]}>C-1 <input type="radio" name="test_c" value="2"{$checked["test_c"][2]}>C-2 <input type="radio" name="test_c" value="3"{$checked["test_c"][3]}>C-3 <select name="test_d"> <option value="">---</option> <option value="1"{$selected["test_d"][1]}>D-1</option> <option value="2"{$selected["test_d"][2]}>D-2</option> <option value="3"{$selected["test_d"][3]}>D-3</option> </select> <input type="submit" value="go"> </form> eof; ?> 複数選択のチェックボックスがある場合の方法をご存じの方いらっしゃいましたら、 是非ともご教授お願い致します。 複数チェックボックスは、 <input type="checkbox" name="bungu[0]" value="鉛筆" >鉛筆 <input type="checkbox" name="bungu[1]" value="定規" >定規 <input type="checkbox" name="bungu[2]" value="色鉛筆" >色鉛筆 <input type="checkbox" name="bungu[3]" value="ペン" >ペン <input type="checkbox" name="bungu[4]" value="絵具" >絵具 <input type="checkbox" name="bungu[5]" value="ハサミ" >ハサミ <input type="checkbox" name="bungu[6]" value="ボールペン" >ボールペン というようなものを利用しています。

    • ベストアンサー
    • PHP
  • phpで作る親子のコンボボックスについて

    phpだけでコンボボックスを作りたいのですが良い方法が見つかりません。 javascriptを使う方法は下記サイトに方法が載っているのでわかるのですが、 http://phpjavascriptroom.com/exp.php?f=include/js/selectoption/pulldown.inc&ttl=%E9%80%A3%E5%8B%95%E3%83%97%E3%83%AB%E3%83%80%E3%82%A6%E3%83%B3 post関数を使えば良いと思いますが、ページの移動なく、クリックイベントを条件分岐できないかと思案中です。助言をお願いします。 <?php $titles = array('さんぷる','サンプル'); $example = array('1', '2'); echo '<select name="test">'; foreach ($titles as $key => $sample) { if ($ibanners == $ibanner) { echo '<option name="' . $example[0] . '" value="' . $example[0] . '" selected="selected">' . $sample . '</option>'; } else { echo '<option name="' . $example[1] . '" value="' . $example[1] . '">' . $sample . '</option>'; } } echo '</select>'; $momo = array('さっかー','やきゅう','ばすけ','ごるふ'); $tetsu = array('サッカー','ヤキュウ','バスケ','ゴルフ'); echo '<select name="saikoro">'; foreach($momo as $bonbi) { if ($GODbonbi == $bonbi) { echo '<option name="カテゴリ01" value="' . $bonbi . '" selected="selected">' . $bonbi . '</option>'; } else { echo '<option name="カテゴリ01" value="' . $bonbi . '">' . $bonbi . '</option>'; } } foreach($tetsu as $bonbi) { if ($GODbonbi == $bonbi) { echo '<option name="カテゴリ02" value="' . $bonbi . '" selected="selected">' . $bonbi . '</option>'; } else { echo '<option name="カテゴリ02" value="' . $bonbi . '">' . $bonbi . '</option>'; } } echo '</select>'; ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう