dポイントプレゼントキャンペーン実施中!

smartyについて教えてください。

mysqlのデータを繰り返し表示させたいのですが
Warning: htmlspecialchars() expects parameter 1 to be string, array given in パス modifier.escape.php on line 26
とエラーが出てしまい動作しません。

foreachの使い方がおかしいのかと思いマニュアルをみてみたのですが
わかりませんでした。

どうすれば繰り返し表示できるようになるでしょうか?

---php---

$i = 0;

$list = array();

while ($col = mysql_fetch_array($res, MYSQL_ASSOC)) {
$list[$i]['id'] = $col[id];
$list[$i]['title'] = $col[title];
$list[$i]['main'] = $col[main];
$i++;
}
$smarty->assign('list', $list);

---tpl---
{foreach item=list from=$list}
<tr>
<td>{$list.id}</td>
<td>{$list.title}</td>
<td>{$list.main}</td>
<td><a href="hoge.php?id={$list.id}">a</a></td>
<td><a href="hoges.php?id={$list.id}">a</a></td>
</tr>
{/foreach}

A 回答 (1件)

foreachではなく、テンプレートで使われる変数にエスケープ処理が施されている為に発生するエラーだと思います。



エスケープ処理をさせないように、変数の後に|smarty:nodefaultsを指定してみて下さい。

foreach item=list from=$list|smarty:nodefaults}

この回答への補足

お騒がせすみません^^;同様に
|smarty:nodefaults}
で解決できました!ありがとうございました。

補足日時:2008/07/28 22:03
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
それが原因でした^^;おかげ様で助かりました。

内容がそれてしまうのですがフォームからmysqlに

<p>あああ</p>
<br />
<p>あああ</p>

と登録しhtmlに表示させようとするとタグがそのまま表示
されてしまうのですがタグとして表示させることは可能でしょうか?

ソースを見ると
<p>&lt;p&gt;あああ&lt;/p&gt;

&lt;br /&gt;
&lt;p&gt;あああ&lt;/p&gt;</p>
となっています。

お礼日時:2008/07/28 21:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!