Fatal error: Call to a member function fpage() on a non-object
smarty では、ページング関数を呼び出すことにより、ページ上で page.class.php が呼び出され、インスタンス化されています。 具体的なステートメントは次のとおりです。 :
/*製品リスト*/
function get_product_list($cat_id)
{
if($cat_id)
{
$num=6;
$where = " where classid ='$cat_id' and shenhe=1 ";
$sql1 = $GLOBALS['db']->query("select * from ".$GLOBALS['db']->table(' product' ).$where."");
$total = $GLOBALS['db']->num_rows($sql1);
}
else
{
$num =6 ;
$where = " where shenhe=1 ";
$sql2=$GLOBALS['db']->query("select * from ".$GLOBALS['db']-> table( 'product').$where."");
$total=$GLOBALS['db']->num_rows($sql2);
}
$page=new page($ total, $num);
//echo $total;
//exit();
$sql="select * from ".$GLOBALS['db']->table('product ') .$where."order by addtime desc {$page->limit}";
while($row=$GLOBALS['db']->fetch_array($sql))
{
$url=$GLOBALS['db']->rewrite_url('cpxx_xx',$row['productid']);
$product_list[]=array(
"id" => $ row[ 'productid'],
"タイトル" => $row['title'],
"画像" => $row['image']
);
}
return $product_list;
}
/*初期化データ*/
$smarty->assign('ur_here',$db->gt;ur_here('product_class',$cat_id));
$smarty->assign('product_category',$db->get_product_category('')); //製品表示の左側のカテゴリリスト
$smarty->assign('product_list', get_product_list($cat_id) ); //商品リスト
$smarty->assign('page_nav',$page->fpage(array(3,4,5,6,7,0,1) ,2,8) )); //商品のページネーション この文は間違っています、誰か助けてくれたら教えてください〜!
------解決策-----------
$page が関数内で初期化されます。つまりローカル変数なので、当然関数外では使えません。
------解決策-----------
は関数の戻り値として返されます。例:
return $product_list;
が return array(
'list'=>$product_list,
'fpage'=>$page->fpage(array(3,4) 、5、6、7、0、1、2、8))、
)
。
------解決策----------------------
関数の戻り値を #5 に変更します。
$smarty->assign('product_list',get_product_list($cat_id)); //商品リスト
$smarty->assign('page_nav',$page->fpage(array) (3,4,5,6,7,0,1,2,8)));
は次のように変更されます:
$ar = get_product_list($cat_id);
$smarty->assign ( 'product_list',$ar['list']); //製品リスト
$smarty->assign('page_nav',$ar['fpage']); - --解決策------------------
function get_product_list($cat_id){
global $page;
//この文を追加します if($cat_id)....
その他は変更する必要はありません