[PHP-users 23138]foreachを使ってデータを一つのテーブルで表示させる方法

Koyama Manabu sm-bunbun-ll @ mx9.tiki.ne.jp
2004年 8月 30日 (月) 17:35:35 JST


小山といいます。
Webサーバー側:Fedoracore1+php4.3.7+Apache2.0.49+Smarty2.6.3
DB側:Windows2000+MSSQLServer2000
です。

Smartyを使って、SQLServer2000のストアドプロシージャに
接続してデータを取得してブラウザ上に表示させようと思っています。
php側を以下のように書きました。
==============php==================
<?php
require_once("mssql_conclass.php");

class Kensaku_class extends koyama_class{

function Kensaku_class(){
 $this->koyama_class();
}
function get_kekka(){
$sql="EXECUTE sampletest_store;";
$db_result=$this->db_object->QUERY($sql);
if(DB::isError($db_result)){
 print $db_result->getDebugInfo();
 exit;
 }

while($value=$db_result->fetchRow(DB_FETCHMODE_ASSOC)){
$this->smarty_obj->assign("t_data",$value);  -----1
$this->smarty_obj->display("search_kekka.tpl");
}
$this->db_object->disconnect();
 }
}
session_start();
$init_obj=new Kensaku_class();
$init_obj->get_kekka();
?>
=====================================================
テンプレート側は
=====================================================
{config_load file="common.conf" section="common_html"}
<html><head><title>test</title>
{#html_header#}
<TABLE border="0" width="100%">------A
<TR><TD align="left">
</TD>
<TD>検索結果</TD>
</TR>
</TABLE>
<BR>
<TABLE border="1">--------B
<TBODY><TR>
<TD>処理日</TD>
<TD>買受人名</TD>
<TD>売上金額</TD>
<TD>売上キロ数</TD>
</TR>
<tr>
{foreach key=key item=item from=$t_data} -------2
<td>{$item}</td>
{/foreach}
</tr>
</TBODY>
</TABLE>
</BODY>
</html>
=========================================================
で一応データは表示できるのですが、一つのテーブルで
表示されるのではなく、「検索結果」+検索結果テーブル
という風にAのテーブルとBのテーブルのセットで繰り返し
表示されてしまいます。

1の部分が2の部分でうまくループを起こして一つのテーブルで表示されれば
良いのですが、思い通りに行きません。
一つのテーブルでうまく表示できる方法は何かありますでしょうか?
いろいろと探したのですが、同じようなものが見つかりませんでした。

使い方が間違っていたらご指摘ください。
ではよろしくお願いします。




PHP-users メーリングリストの案内