質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

Q&A

解決済

1回答

1030閲覧

Smarty テンプレート側でのラジオボタン表示について

shinri911

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

0グッド

0クリップ

投稿2020/10/02 03:29

編集2020/10/02 08:18

前提・実現したいこと

自社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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/10/02 03:30

バージョンを追記してください
shinri911

2020/10/02 04:57

Smartyのバージョンは 2.6.25で、PHPのバージョンは5.2.8です。 ※バージョンが古いことは承知しているのですが、諸事情でバージョンアップができず古いままとなっています。
m.ts10806

2020/10/02 05:14

質問本文に追記してください。 あと、「WEBサイト上で用意しているエラーメッセージ画面」とは何でしょうか。 変数もそうですが状況やこちらで再現できる情報がないと何とも言えません。 特に古い環境だとわざわざ環境準備しようとは思いませんし・・
shinri911

2020/10/02 08:20

WEBサイト上で用意しているエラーメッセージ画面 ➡これは、サイト内で作成しているerror.tplになります。 既にエラー無く動いているラジオボタンの記述をトレースして作成しているのですが、 {html_radios}内の "selected"の記述が引っかかっているのだろうと予測はしています。 $VR_TYPES・・・元から存在しているラジオボタンで、正常に動作している。 $VR_REASON・・・今回追加したいラジオボタン。 何か、デバッグの方法などご教示いただけますと幸いです。
m.ts10806

2020/10/02 08:37

なるほど しかし<td></td>内に表示されるってどういう状況でしょうか? iframeなども使ってないようですし、そこだけという状況が良くわかりません。 Smarty側でも変数をダンプする方法はありますが、そちらは試されました? https://qiita.com/miiitaka/items/f4daf1f0ecf56dbe886d
guest

回答1

0

自己解決

配列を格納する変数名が、既存のものと被っていたため想定通りの結果になっていないようでした。

($_SESSION["vr_values"]["vrs"] = array();の["vrs"]の部分)

いろいろとお知恵をいただきありがとうございました。

投稿2021/05/26 05:58

shinri911

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問