PDA

Просмотр полной версии : Обращение по неправильному адресу


serg-php
10.06.2008, 20:53
Имею функцию:

function ShowDropDownCategoryList( $cat, $name = "cat", $f_opt = "", $hide_id = 0, $onCh = "", $fset = "_ALL_" )
{
global $hwJsCats;
global $db;
$page = ( boolean )$_GET['page'];
$is_ams_page = ( $page == "add" || $page == "modify" || $page == "search" ) && PHP_SELF_BASE == "index.php";
if ( EN_CAT_MULTI && ( $is_ams_page || $EN_CAT_MULTI ) )
{
return showdropdownmulticategorylist( $cat, $fset, $hide_id );
}
$SEL = array( );
if ( is_array( $cat ) )
{
foreach ( $cat as $v )
{
$SEL[$v] = 1;
}
}
else
{
$SEL[$cat] = 1;
}
include_once( SITE_PATH."inc/class.categ_tree.php" );
$o_cat =& new HawkCategory( TBL_CAT );
$o_cat->CAT_ORDER = "c.weight DESC,name";
$o_cat->CAT_F = "fset";
if ( EN_FSETS && $fset != "_ALL_" )
{
$o_cat['SQL_CAT'] .= " AND fset='{$fset}'";
}
if ( $hide_id )
{
if ( !is_array( $hide_id ) )
{
$hide_id = array(
$hide_id
);
}
$hide_id = array_map( "intval", $hide_id );
$hide_id = $db->one_col_array( "SELECT id FROM ".TBL_CAT." WHERE id IN(".implode( ",", $hide_id ).")" );
if ( $hide_id )
{
$o_cat['SQL_CAT'] .= " AND c.id NOT IN(".get_daughter_cats( $hide_id ).")";
}
}
if ( defined( "TBL_CAT_EXTRA" ) && !defined( "ADMIN_AREA" ) && $is_ams_page && ( $page == "add" || $page == "modify" ) )
{
$no_ids = $db->one_col_array( "SELECT cid FROM ".TBL_CAT_EXTRA." WHERE type=\"H\"" );
if ( $no_ids )
{
$o_cat['SQL_CAT'] .= " AND c.id NOT IN(".implode( ",", $no_ids ).")";
}
unset( $no_ids );
}
$a_v = $o_cat->Get_CatFullPaths_Array( );
$cats = "";
$cnt = count( $a_v );
$i = 0;
for ( ; $i < $cnt; ++$i )
{
$v = $a_v[$i];
$cats .= "<OPTION ".( $v['pid'] ? "" : "class=root " )."VALUE=".$v['id'];
if ( isset( $SEL[$v['id']] ) )
{
$cats .= " SELECTED";
}
$cats .= ">".$v['cat_path']."\n";
}
$hwJsCats = "";
if ( EN_FSETS && $fset == "_ALL_" )
{
$A_FSET = array( );
reset( $o_cat->CAT_FDATA );
while ( list( $_id, $_fs ) = each( $o_cat->CAT_FDATA ) )
{
$A_FSET[$_fs['fset']][] = $_id;
}
foreach ( $A_FSET as $_fs => $v )
{
$hwJsCats .= "\"|".implode( "|", $v )."|\",";
}
if ( $hwJsCats )
{
$hwJsCats = substr( $hwJsCats, 0, -1 );
}
}
return "<select name=".$name." ".$onCh.">".$f_opt.$cats."\n</select>";
}

Запускаю, получаю ответ Fatal error: Cannot use object of type HawkCategory as array in Y:\home\localhost\www\mysite.com\inc\lib.inc.php on line 400


Эта строка :
$o_cat['SQL_CAT'] .= " AND fset='{$fset}'";

Что с ней не так - не пойму!

NOmeR1
10.06.2008, 21:26
Что с ней не так - не пойму!
Ты используешь объект как массив. Как исправить - трудно сказать, одной функции не достаточно.