前提・実現したいこと
自社WEBサイトの依頼フォームをPHPで作成しており、改修に際して項目を一つ追加したいのですが、他のラジオボタンを参考に廃止したものの、エラーとなってしまいます。
PHPもSmartyも見よう見まねで扱っているので、お知恵をお貸しください。
発生している問題・エラーメッセージ
ラジオボタンを配置したい<td></td>内に、WEBサイト上で用意しているエラーメッセージ画面が表示される。
該当のソースコード
PHP
1session_start(); 2 3$search_values = getSearchParameters4Agent(); 4$VR_TYPES = array("AAA", "BBB"); //元から存在して正常に動いている項目 5$VR_REASON = array("お客様都合", "その他"); //今回追記したい項目 6 7if (isset($_SESSION["vr_values"]) === false) { 8 $_SESSION["vr_values"] = array(); 9} 10if ("POST" === $_SERVER["REQUEST_METHOD"]) { 11 if ($_SESSION["key"] === intval($_POST["key"])) { 12 $_SESSION["vr_values"]["vrs"] = array(); 13 $count = 1; 14 while (isset($_POST["rad_vr_type".$count]) === true) { 15 $_SESSION["vr_values"]["vrs"][$count]["vr_type"] = $_POST["rad_vr_type".$count]; 16 **$_SESSION["vr_values"]["vrs"][$count]["vr_reason"] = $_POST["rad_vr_reason".$count];** 17 $count++; 18 } 19 header("Location: ./vr2.php"); 20 exit(); 21 } 22} 23if (count($_SESSION["vr_values"]["vrs"]) === 0) { 24 $_SESSION["vr_values"]["vrs"][0]["vr_type"] = ""; 25 **$_SESSION["vr_values"]["vrs"][0]["vr_reason"] = "";** 26} 27 28$_SESSION["key"] = mt_rand(1, 9999); 29$smarty->assign(compact("VR_TYPES")); 30**$smarty->assign(compact("VR_REASON"));** 31$smarty->display("./vr.tpl");
tpl
1<form method="post" onSubmit="return false;" enctype="multipart/form-data"> 2{foreach name=list from=$values.vrs item=item} 3 {math equation=a+1 a=$smarty.foreach.list.index assign=count} 4 <td> 5 {html_radios name="rad_vr_type$count" options=$VR_TYPES selected=$item.vr_type separator="<br>"} 6 </td> 7 <td> 8 {html_radios name="rad_vr_reason$count" options=$VR_REASON selected=$item.vr_reason separator="<br>"} 9 </td> 10 11{/foreach} 12</form>
試したこと
「selected=$item.vr_reason」の「&item.」を外した場合はエラーにならず表示が行われました。
ただ、フォームの送信内容確認画面から記入画面に戻ってきた際に、入力内容を表示するために必要となるため、「$item.」の記述は外せないことは理解しています。
同じフォーム内に既に設置されているラジオボタンの記述をトレースしたのですが、うまく動かない状況です。
###バージョン
Smarty・・・2.6.25
PHP・・・は5.2.8
回答1件
あなたの回答
tips
プレビュー