[PHP-users 14312] Smarty(append)について

kondou toshio php-users@php.gr.jp
2003年 3月 25日 (火) 10:05:12 JST


近藤と申します。
Smartyを利用しているのですが、今回次のような現象が出て困っています。
どなたかご存知でしたらよろしくお願いします。

DBよりレコードセットを取得して、append 関数でテンプレートに代入しています。

	//$recordにレコードセット配列を格納する
	$nrow = $dbc->GetRecordSet($frmnm,$record,$set_KEY_ID);

	//レコードセットをテンプレート変数にセット レコード数は5件
	if($nrow > 0){
		$reccnt = $nrow;
		for($i=0; $i<$nrow;$i++){
			$tpl->append("KYK_ID",$record['KYK_ID'][$i]);
			$tpl->append("NO",$reccnt);
			$tpl->append("KYK_NM",$record['KYK_NM'][$i]);
			$tpl->append("ADDRESS",$record['ADDRESS'][$i]);
			$tpl->append("GYOUSYA_KBN",$record['GYOUSYA_KBN'][$i]);
			$reccnt--;
		} 

	この時、レコードのADDRESSフィールドの値がNULLの時無視されます。
	Debugを表示すると
	Array (4)
    0 => 神戸市
    1 => 高知県 土佐山田
    2 => 兵庫県 神戸市 中央区
    3 => 兵庫県 神戸市 中央区
    本来5件のレコードなのですが、4件しか配列としてセットできていません。
    つぎに、nullレコードの時空白をセットすれば
	if($nrow > 0){
		$reccnt = $nrow;
		for($i=0; $i<$nrow;$i++){
			$tpl->append("KYK_ID",$record['KYK_ID'][$i]);
			$tpl->append("NO",$reccnt);
			$tpl->append("KYK_NM",$record['KYK_NM'][$i]);
			if($record['ADDRESS'][$i] == NULL){
				$tpl->append("ADDRESS"," ");
			}else{
				$tpl->append("ADDRESS",$record['ADDRESS'][$i]);
			}
			if($record['GYOUSYA_KBN'][$i] == NULL){
				$tpl->append("GYOUSYA_KBN"," ");
			}else{
				$tpl->append("GYOUSYA_KBN",$record['GYOUSYA_KBN'][$i]);
			}
			$reccnt--;
		}
   Array (5)
   0 => 
   1 => 神戸市
   2 => 高知県 土佐山田
   3 => 兵庫県 神戸市 中央区
   4 => 兵庫県 神戸市 中央区 
    この時は正常に処理されます。
    ひとつひとつappendするのではなくて、配列を作成してセットすればいいのかもしれませんが、そのテストは
    まだやっていません。

	回避策は上のようなことしかないのでしょうか、ご存知の方がいらっしゃったらよろしくお願いいたします。



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