※ ChatGPTを利用し、要約された質問です(原文:smartyでMySQLから連想配列取り出しと表示)
smartyでMySQL連想配列の表示方法
このQ&Aのポイント
smartyを使用してMySQLから連想配列を取得し表示する方法についてご質問です。
フォーム(POST)を使ってMySQLにデータを挿入し、mysql_fetch_assocを使用して連想配列で取り出し、while文で表示する方法についてお教えください。
smartyで連想配列をループ処理して表示する際に、同じ値が繰り返し表示されてしまう問題について解決策を教えてください。
smartyでMySQLから連想配列取り出しと表示
フォーム(POST)を使ってMySQLにデータを挿入し、
mysql_fetch_assocにて連想配列で取り出して、
whileで表示する場合、
========================================
$sql = "SELECT * hogehoge";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
echo $row["userid"];
echo $row["name"];
echo $row["sex"];
}
========================================
とすれば、MySQLから値を取りだして表示できます。
ただ、それをsmartyに置き換えて以下のようにすると、
========================================
{foreach from=$row item=hoge}
<tr>
<td>{$row.userid}</td>
<td>{$row.name}</td>
<td>{$row.sex}</td>
</tr>
{/foreach}
========================================
同じ値が$rowの値の数だけ返されてしまいます。
例だと、
1 太郎 男
2 花子 女
3 一郎 男
4 陽子 女
5 良子 女
と表示したいものが、
1 太郎 男
1 太郎 男
1 太郎 男
となってしまいます。
これを解決するには、どのようにすればよろしいのでしょうか?
お礼
非常に分かりやすい解説ありがとうございます。 まさにおっしゃる通りで、 $smarty = new Smarty; while( $row = mysql_fetch_assoc( $result ) ) { $smarty->append( 'row', $row ); } と多次元配列にしてしてあげることで解決できました。 本当、ありがとうございました!