$ HTTP_POST_VARS不是全局的,将其更改为要传入的参数。
我通常使用$ _POST,但在oscommerce中默认是这样,所以我用它来保持相似性。
我无法使用此代码,我不知道为什么。
function check_product_available() {
global $cart;
$products = $cart->get_products();
//product exclusion
//check to see if the product is in one of the limited categories
$check_product_query = tep_db_query( $sql = 'SELECT products_id
FROM discount_coupons_to_products
WHERE coupons_id="'.tep_db_input( $HTTP_POST_VARS['couponcart'] ).'"' );
$exlproducts = array();
if( tep_db_num_rows( $check_product_query ) > 0 ) {
while( $products = tep_db_fetch_array( $check_product_query ) ) {
$exlproducts[] = $products['products_id'];
}
}
for ($i=0, $n=sizeof($products); $i<$n; $i++) {
if( in_array( $products[$i]['id'], $exlproducts ) ) {
//use this to debug exclusions:
return false;
}
}
return true;
}
//end product exclusion
我试过移动循环,它仍然总是返回true。我已经回应了产品数组和id在那里并运行sql查询硬编码优惠券ID,它也工作正常。
答案 0 :(得分:3)
你的for循环毫无意义,因为它只会循环一次。返回值将结束所有其他执行。您可能想要的是在数组中返回false而在所有其他条件下返回true。
for ($i=0, $n=sizeof($products); $i<$n; $i++) {
if( in_array( $products[$i]['id'], $exlproducts ) ) {
//use this to debug exclusions:
return false;
}
}
return true;
编辑:您真的不应再使用$HTTP_POST_VARS
。
答案 1 :(得分:1)
得到它......
$ HTTP_POST_VARS不是全局的,将其更改为要传入的参数。