<?php
// size 是个数 page 是页数
if($cat_id == "")
{
$data['success'] = 0;
$data['error'] = '分类ID不能为空';
echo json_encode($data);
exit;
}
$children = get_children($cat_id);
$count_arr = get_mall_goods_count($children,$user_dengji);
$count = $count_arr['count(*)']; //总个数
/*传的数量如果大于真实数量,显示最后一页数据*/
$max_page = ($count> 0) ? ceil($count / $size) : 1;
if ($page > $max_page)
{
$page = $max_page;
}
$goodslist = get_mall_goods($children, $size, $page, 'sort_order',$user_dengji);
$page_arr = page($count,$size); 分页
if ($goodslist === null) {
$data['success'] = 0;
$data['error'] = '没有数据';
}
else
{
$data['success'] = 1;
$data['data']['goodslist'] = $goodslist;
$data['data']['page'] = $page_arr;
}
// echo "<pre>";
// print_r($data);
// echo "</pre>";
// die;
echo json_encode($data);
/**
* 获取数量
* @param [type] $cat_id [description]
* @return [type] [description]
*/
function get_mall_goods_count($cat_id,$user_dengji){
$where = "g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 AND g.is_mall = 1 and is_luck = 0 and is_miao = 0 and is_fresh = 0 and is_zero = 0 ";
$where .= " and $cat_id AND g.show_vip_id LIKE '%{$user_dengji}%'";
$sql = "select count(*) FROM "."商品表"." as g " .
'LEFT JOIN ' . "分类表" . ' AS c ON c.cat_id = g.cat_id WHERE ' .
$where;
$res = find_query($sql);
return $res;
}
/**
* 获取商品
* @param [type] $cat_id [description]
* @param [type] $size [description]
* @param [type] $page [description]
* @param [type] $sort [description]
* @param [type] $order [description]
* @return [type] [description]
*/
function get_mall_goods($cat_id, $size, $page, $sort, $user_dengji){
$where = "g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 AND g.is_mall = 1 and is_luck = 0 and is_miao = 0 and is_fresh = 0 and is_zero = 0 ";
$where .= " and $cat_id and g.show_vip_id LIKE '%{$user_dengji}%'";
$skip = ($page - 1) * $size;
$limit = " limit " . $skip . "," . $size;
$sql = 'SELECT g.goods_id, g.goods_name, g.goods_number, g.suppliers_id, g.market_price, g.shop_price , ' .
'g.goods_brief, g.original_img' .
' ,g.team_num,g.team_price,g.goods_type '.
'FROM ' . "商品表" . ' AS g ' .
'LEFT JOIN ' . "分类表" . ' AS c ON c.cat_id = g.cat_id ' .
"WHERE $where ORDER BY g.`".$sort."`, g.goods_id DESC" . $limit;
$res = query($sql);
return $res;
}
function get_children($cat = 0)
{
return 'g.cat_id ' . db_create_in(array_unique(array_merge(array($cat), array_keys(cat_list($cat, 0, false)))));
}
/**
* 创建像这样的查询: "IN('a','b')";
*
* @access public
* @param mix $item_list 列表数组或字符串
* @param string $field_name 字段名称
*
* @return void
*/
function db_create_in($item_list, $field_name = '')
{
if (empty($item_list))
{
return $field_name . " IN ('') ";
}
else
{
if (!is_array($item_list))
{
$item_list = explode(',', $item_list);
}
$item_list = array_unique($item_list);
$item_list_tmp = '';
foreach ($item_list AS $item)
{
if ($item !== '')
{
$item_list_tmp .= $item_list_tmp ? ",'$item'" : "'$item'";
}
}
if (empty($item_list_tmp))
{
return $field_name . " IN ('') ";
}
else
{
return $field_name . ' IN (' . $item_list_tmp . ') ';
}
}
}
/**
* 获得指定分类下的子分类的数组
*
* @access public
* @param int $cat_id 分类的ID
* @param int $selected 当前选中分类的ID
* @param boolean $re_type 返回的类型: 值为真时返回下拉列表,否则返回数组
* @param int $level 限定返回的级数。为0时返回所有级数
* @param int $is_show_all 如果为true显示所有分类,如果为false隐藏不可见分类。
* @return mix
*/
function cat_list($cat_id = 0, $selected = 0, $re_type = true, $level = 0, $is_show_all = true)
{
static $res = NULL;
if ($res === NULL)
{
$sql = "SELECT c.cat_id, c.cat_name, c.commission, c.measure_unit, c.parent_id, c.is_show, c.show_in_nav, c.grade, c.sort_order, COUNT(s.cat_id) AS has_children FROM 分类表 AS c LEFT JOIN 分类表 AS s ON s.parent_id=c.cat_id GROUP BY c.cat_id ORDER BY c.parent_id, c.sort_order ASC";
$res = query($sql);
$sql = "SELECT cat_id, COUNT(*) AS goods_num " .
" FROM " . "商品表" .
" WHERE is_delete = 0 AND is_on_sale = 1 " .
" GROUP BY cat_id";
$res2 = query($sql);
$newres = array();
foreach($res2 as $k=>$v)
{
$newres[$v['cat_id']] = $v['goods_num'];
}
foreach($res as $k=>$v)
{
$res[$k]['goods_num'] = !empty($newres[$v['cat_id']]) ? $newres[$v['cat_id']] : 0;
}
}
if (empty($res) == true)
{
return $re_type ? '' : array();
}
$options = cat_options($cat_id, $res); // 获得指定分类下的子分类的数组
$children_level = 99999; //大于这个分类的将被删除
if ($is_show_all == false)
{
foreach ($options as $key => $val)
{
if ($val['level'] > $children_level)
{
unset($options[$key]);
}
else
{
if ($val['is_show'] == 0)
{
unset($options[$key]);
if ($children_level > $val['level'])
{
$children_level = $val['level']; //标记一下,这样子分类也能删除
}
}
else
{
$children_level = 99999; //恢复初始值
}
}
}
}
/* 截取到指定的缩减级别 */
if ($level > 0)
{
if ($cat_id == 0)
{
$end_level = $level;
}
else
{
$first_item = reset($options); // 获取第一个元素
$end_level = $first_item['level'] + $level;
}
/* 保留level小于end_level的部分 */
foreach ($options AS $key => $val)
{
if ($val['level'] >= $end_level)
{
unset($options[$key]);
}
}
}
if ($re_type == true)
{
$select = '';
foreach ($options AS $var)
{
$select .= '<option value="' . $var['cat_id'] . '" ';
$select .= ($selected == $var['cat_id']) ? "selected='ture'" : '';
$select .= '>';
if ($var['level'] > 0)
{
$select .= str_repeat(' ', $var['level'] * 4);
}
$select .= htmlspecialchars(addslashes($var['cat_name']), ENT_QUOTES) . '</option>';
}
return $select;
}
else
{
// foreach ($options AS $key => $value)
// {
// $options[$key]['url'] = build_uri('category', array('cid' => $value['cat_id']), $value['cat_name']);
// }
return $options;
}
}
//这个是分页
function page($num,$geshu)
{
if(is_numeric($num) && is_numeric($geshu))
{
$page_num = ceil($num/$geshu);//取整
if($page_num < 1){
$page_num = 1;
}
$arr = array();
for ($i=1; $i <= $page_num; $i++) {
array_push($arr,$i);
}
return $arr;
}
}
?>