不支持的操作数类型?

时间:2012-03-23 20:53:33

标签: php operand

我必须说我对PHP完全无能为力,我知道足以将我的网站调整到可接受的程度。我在使用phpauction GPL时遇到了一些麻烦,每当我点击其中一个类别时,我都会这样:

致命错误:第175行/home/retrorea/public_html/tradepost/browse.php中不支持的操作数类型

这是第175行的内容......

$left_limit = ($page-1)*$lines;

这是代码的其余部分。

<?#//v.3.2.3
#///////////////////////////////////////////////////////
#// COPYRIGHT 2007 Phpauction.net ALL RIGHTS RESERVED //
#///////////////////////////////////////////////////////

require('./includes/config.inc.php');
include $include_path."auctionstoshow.inc.php";
#// Get parameters from the URL
$params = getUrlParams("=");
if(empty($_GET['id']))
    $_GET['id'] = $params['id'];
else
    $params['id'] = $_GET['id'];
$id = intval($params['id']);

#// #############################################################################
function getsubtree($catsubtree,$i) {
    global $catlist;
    $res=mysql_query("SELECT cat_id FROM PHPAUCTIONXL_categories WHERE parent_id=".intval($catsubtree[$i]));
    while($row=mysql_fetch_assoc($res)) {
        $catlist[]=$row['cat_id'];
        $catsubtree[$i+1]=$row['cat_id'];
        getsubtree($catsubtree,$i+1);
    }
}

$catsubtree[0]=$id;
$catlist[]=$catsubtree[0];
getsubtree($catsubtree,0);
$catalist="(";
$catalist.=join(",",$catlist);
$catalist.=")";
$NOW = date("YmdHis",mktime(date("H")+$SETTINGS['timecorrection'],date("i"),date("s"),date("m"), date("d"),date("Y")));
if ($id==0) {
    /*
    display full list of categories of level 0
    */
    $result = mysql_query ( "SELECT * FROM PHPAUCTIONXL_categories WHERE parent_id='0' ORDER BY cat_name" );
    if (!$result) {
        /* output error message and exit */
        print "database error";
        exit;
    } else {
        /* query succeeded - display list of categories */
        $need_to_continue = 1;
        $cycle = 1;

        $TPL_main_value = "";
        $TPL_categories_string = $MGS_2__0027;
        while ($row=mysql_fetch_array($result)) {
            if ($cycle==1 ) {
                $TPL_main_value.="<tr WIDTH=100% ALIGN=LEFT>\n";
            }
            $sub_counter = (int)$row['sub_counter'];
            $cat_counter = (int)$row['counter'];
            if ($sub_counter!=0) $count_string = "(".$sub_counter.")";
            else {
                $count_string = "";
            }
            #// Retrieve the translated category name
            $row['cat_name'] = @mysql_result(mysql_query("SELECT cat_name FROM PHPAUCTIONXL_cats_translated WHERE cat_id=".$row['cat_id']." AND lang='".$language."'"),0,"cat_name");
            $TPL_main_value .=!empty($row['cat_colour']) ? "    <td BGCOLOR=\"".$row['cat_colour']."\" WIDTH=\"33%\"><a href=\"".$SETTINGS['siteurl']."browse.php?id=".$row['cat_id']."\">".$row['cat_name'].$count_string."</a></td>\n" : "    <td WIDTH=\"33%\"><a href=\"".$SETTINGS['siteurl']."browse.php?id=".$row['cat_id']."\">".$row['cat_name'].$count_string."</a></td>\n";

            ++$cycle;
            if ($cycle==4) { $cycle=1; $TPL_main_value.="</tr>\n"; }
        }

        if ( $cycle>=2 && $cycle<=3 ) {
            while ( $cycle<4 ) {
                $TPL_main_value .= "    <td WIDTH=\"33%\">&nbsp;</td>\n";
                ++$cycle;
            }
            $TPL_main_value .= "</tr>\n";
        }
        $TPL_auctions_list_value = array();

    $PAGE = 1;
    $PAGES = 1;

        include "header.php";
        include phpa_include("template_browse_header_php.html");
        include phpa_include("template_browse_php.html");
        include "footer.php";
        exit;
    }
} else {
    /*
    specified category number

    look into table - and if we don't have such category - redirect to full list
    */
    $result = mysql_query ( "SELECT * FROM PHPAUCTIONXL_categories WHERE cat_id=".intval($id) );
    if ($result)
    $category = mysql_fetch_array($result);
    else
    $category = false;
    #// Retrieve the translated category name
    $category['cat_name'] = @mysql_result(mysql_query("SELECT cat_name FROM PHPAUCTIONXL_cats_translated WHERE cat_id=".$category['cat_id']." AND lang='".$language."'"),0,"cat_name");
    if (!$category) {
        /* redirect to global categories list */
        header ( "Location: browse.php?id=0" );
        exit;
    } else {
        /*
        such category exists
        retrieve it's subcategories and its auctions
        */
        /* recursively get "path" to this category */

        $TPL_categories_string = "".$category["cat_name"];
        $par_id = (int)$category['parent_id'];

        while ( $par_id!=0 ) {
            // get next parent
            $res = mysql_query ( "SELECT * FROM PHPAUCTIONXL_categories WHERE cat_id=".intval($par_id));
            if ($res) {
                $rw = mysql_fetch_array($res);
                if ($rw) $par_id = (int)$rw['parent_id'];
                else $par_id = 0;
            } else $par_id = 0;
            #// Retrieve the translated category name
            $rw['cat_name'] = @mysql_result(mysql_query("SELECT cat_name FROM PHPAUCTIONXL_cats_translated WHERE cat_id=".$rw['cat_id']." AND lang='".$language."'"),0,"cat_name");
            $TPL_categories_string = "<a href=\"".$SETTINGS['siteurl']."browse.php?id=".$rw["cat_id"]."\">".$rw["cat_name"]."</a> &gt; ".$TPL_categories_string;
        }

        /* get list of subcategories of this category */
        $subcat_count = 0;
        $result = mysql_query ( "SELECT * FROM PHPAUCTIONXL_categories WHERE parent_id=".intval($id)." ORDER BY cat_name" );
        if (!$result) {
            /* output error message and exit */
        } else {
            /* query succeeded - display list of categories */
            $need_to_continue = 1;
            $cycle = 1;

            $TPL_main_value = "";
            while ($row=mysql_fetch_array($result)) {
                ++$subcat_count;
                if ($cycle==1 ) {
                    $TPL_main_value.="<tr ALIGN=LEFT>\n";
                }
                $sub_counter = (int)$row['sub_counter'];
                $cat_counter = (int)$row['counter'];
                if ($sub_counter!=0) $count_string = "(".$sub_counter.")";
                else {
                    if ($cat_counter!=0) {
                        $count_string = "(".$cat_counter.")";
                    } else $count_string = "";
                }
                if($row['cat_colour'] != "") {
                    $BG ="BGCOLOR=".$row['cat_colour'];
                } else {
                    $BG = "";
                }
                #// Retrieve the translated category name
                $row['cat_name'] = @mysql_result(mysql_query("SELECT cat_name FROM PHPAUCTIONXL_cats_translated WHERE cat_id=".$row['cat_id']." AND lang='".$language."'"),0,"cat_name");
                $TPL_main_value .= "    <td $BG WIDTH=\"33%\"><a href=\"".$SETTINGS['siteurl']."browse.php?id=".$row['cat_id']."\">".$row['cat_name'].$count_string."</a></td>\n";

                ++$cycle;
                if ($cycle==4) {
                    $cycle=1;
                    $TPL_main_value.="</tr>\n";
                }
            }

            if ( $cycle>=2 && $cycle<=3 ) {
                while ( $cycle<4 ) {
                    $TPL_main_value .= "    <td WIDTH=\"33%\">&nbsp;</td>\n";
                    ++$cycle;
                }
                $TPL_main_value .= "</tr>\n";
            }
        }
        /* determine limits for SQL query */
        $left_limit = ($page-1)*$lines;

        /* retrieve records corresponding to passed page number */
        $page = (int)$page;
        if ($page==0)   $page = 1;
        $lines = (int)$lines;
        if ($lines==0)  $lines = 50;

        /* get total number of records */
        $qs = "SELECT count(*) FROM PHPAUCTIONXL_auctions 
                        WHERE category IN $catalist 
                        AND starts<=".$NOW." 
                        AND closed='0' 
                        AND private='n' 
                        AND suspended ='0'";
         if($SETTINGS['adultonly']=='y' && !isset($_SESSION["PHPAUCTION_LOGGED_IN"])){
             $qs .= "AND adultonly='n'";
         }

        if(!empty($_POST['catkeyword'])){
            $qs .= " AND title like '%".addslashes($_POST['catkeyword'])."'%";
        }
        $rsl = mysql_query ($qs);
        if ($rsl) {
            $hash = mysql_fetch_array($rsl);
            $total = !$hash[0] ? 1 : (int)$hash[0];
        } else $total = 1;
        #// Handle pagination
        $TOTALAUCTIONS = $total;

        if(!isset($_GET["PAGE"]) || $_GET["PAGE"] == 1) {
            $OFFSET = 0;
            $PAGE = 1;
        } else {
      $PAGE = $_REQUEST["PAGE"];
            $OFFSET = ($PAGE - 1) * $LIMIT;
        }
        $PAGES = ceil($TOTALAUCTIONS / $LIMIT); 

        $qs = "SELECT * FROM PHPAUCTIONXL_auctions 
                                    WHERE category IN $catalist 
                                    AND starts<=".$NOW."    
                                    AND closed='0' 
                                    AND private='n' 
                                    AND suspended ='0' ";
         if($SETTINGS['adultonly']=='y' && !isset($_SESSION["PHPAUCTION_LOGGED_IN"])){
             $qs .= " AND adultonly='n'";
         }
        if(!empty($_POST['catkeyword'])){
            $qs .= " AND title like '%".addslashes($_POST['catkeyword'])."%' ";
        }
        $qs .= "ORDER BY ends ASC LIMIT ".intval($OFFSET).",".intval($LIMIT);
        $result = mysql_query ($qs);
        /* get list of auctions of this category */
        $auctions_count = 0;
        /* selectd items formatter */
        include $include_path."browseitems.inc.php";

        $TPL_auctions_list_value=browseItems($result);
        $auctions_count=count($TPL_auctions_list_value);

        /*$TPL_auctions_total_value .= "<br />".
        "$MSG_290 $total<br />".
        "$MSG_289 $pages ($lines $MSG_291)<br />".
        $MSG_25_0229;

        for ($i=1; $i<=$pages; ++$i) {
            $TPL_auctions_total_value .=
            ($page==$i) ?
            " $i "  :
            " <a href=\"".$SETTINGS['siteurl']."browse.php?id=".$id."&page=$i\">$i</a> ";
        }
        */
        $TPL_auctions_total_value .="";
        if ($auctions_count==0) {
            $TPL_auctions_total_value = $ERR_114;
        }
    }

    include "header.php";
    include phpa_include("template_browse_header_php.html");
    if ( $subcat_count>0 ) {
        include phpa_include("template_browse_php.html");
    }
    if ($subcat_count==0) {
        include phpa_include("template_auctions_no_cat.html");
    }
    include "footer.php";
}
?>

非常感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:1)

要强制该值为整数,请使用intval

答案 1 :(得分:0)

尝试在这些行的正上方添加此代码:

echo "<pre>";
var_dump($lines, $page);exit;

可能发生的事情是你得到一个布尔值或null或一些其他数据类型乘以它无法乘以的东西。该代码将告诉您这两个变量的数据类型。

你可能最终将这一行包含在这样的内容中:

if(is_numeric($lines) && is_numeric($page)){---your code----}else{$left_limit = --whatever your want as default value--}

答案 2 :(得分:-1)

试试这个:

$left_limit = ((int)$page-1)*(int)$lines;