こんにちは。ほかでも似たような質問があり、それも試してみたのですが解決できず質問させていただきます。PHP初心者です。求人のサイトなどである「求人(○件)」のようなことをしたいと思っています。テーブルから○件取得するというところまでは以下のようなコードで実現できました。


//データの選択
$sql = "SELECT work_location, COUNT(*) as num FROM org GROUP BY work_location";
$res = db_query($sql, $conn);
//データの出力
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
$array = array(
"work_location"=>$row["work_location"],
"num"=>$row["num"]
);

このコードをベースにSmartyに読み込ませています。

$row_l_num = get_location_count();
$smarty->assign("row_l_num", $row_l_num);

ここまではよいのですが、Smartyの.tpl側がうまく制御できていません。例えば○件が5件で登録されていると、その5が勝手に解釈され、地区名の5に値する「東京都件」となってしまうような感じです。

どういうふうコードを.tplで書けばよいのですか?教えてください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/09/05 15:55:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:munyaX No.1

回答回数120ベストアンサー獲得回数24

ポイント60pt

最初に気になったのですが、以下ですと一つの配列しか$arrayには

入らないのですが大丈夫でしょうか?集計結果が一件しか無いのが

あらかじめわかっているのならOKです。

$array = array(

"work_location"=>$row["work_location"],

"num"=>$row["num"]

);

仮にここでは以下だと仮定し

array_push($array, array(

"work_location"=>$row["work_location"],

"num"=>$row["num"]

));

$row_l_numには上記の$arrayの内容がそのまま入っていると

すると、Smarty上は以下のようになります。

{foreach from=$row_l_num item="i"}

 {$i.work_location}は{$i.num}件です

{/foreach}

id:aratako0

ありがとうございます。問題だったのはSmartyではなく、array_pushを知らないことでした。ほかの書き方も試したところ、arrayに配列が1つしか入らずお手上げ状態だったものでして。

何とか解決できそうです。本当にありがとうございます。

2008/08/29 17:09:57

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません