[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 メーリングリストの案内

AltStyle によって変換されたページ (->オリジナル) /