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