- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Smartyのセレクトボックスが書けない;;)
Smartyを使ったセレクトボックスの書き方
このQ&Aのポイント
- Smartyを初めて使う際にセレクトボックスの書き方に困っています。どのように書けば良いのでしょうか?
- 質問者はSqlite3を使用しており、カテゴリーというセレクトボックスにidとcategoryの値をforeachで回して入れたいと考えています。
- Smartyを使わずに他の部分は作成できているが、foreachの使い方がよくわからないため、ソースコードの詳しい説明が欲しいとのことです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
簡潔にソースだけ記載します。 PHPからhogeという名前でidとcatの配列を受け取ったものとします。 $hoge = array( "1" => "cat1", "2" => "cat2", "3" => "cat3" ); $smarty->assign("hoge",$hoge); ここまでPHP 以下Smarty <form action="./" method="post"> <select> {foreach from=$hoge key=id item=cat} <option value="{$id}">{$cat}</option> {/foreach} </select> </form> 参考になれば幸いです。
補足
回答ありがとうございます。 ヒントにほぼセットできました。 ただ、ひとつ問題が・・・。 セレクトボックスに同じ値が2つセットされるんです。 経営 経営 という具合に・・・。 index.php $stmt = $pdo->prepare('SELECT * FROM ' . DATABASE_TABLE_CATEGORY); $flag = $stmt->execute(); if (!$flag) { db_error($stmt->errorInfo()); } while ($data = $stmt->fetch(PDO::FETCH_ASSOC)) { $smarty->assign('cats', array( 'no' => $data[no], 'cat' => $data[category] )); } admin_form.tpl <select name="cat"> <option value="">選択してください</option> <!--{foreach from=$cats|smarty:nodefaults key=no item='cat'}--> <option value="{$cats.no}">{$cats.cat}</option> <!--{/foreach}--> </select>