/compare.php

https://github.com/country3721/choclate · PHP · 125 lines · 94 code · 19 blank · 12 comment · 10 complexity · 264acc44d4ef8003ebef78d5d28764b8 MD5 · raw file

  1. <?php
  2. /**
  3. * ECSHOP 商品比较程序
  4. * ============================================================================
  5. * 版权所有 2005-2010 上海商派网络科技有限公司,并保留所有权利。
  6. * 网站地址: http://www.ecshop.com;
  7. * ----------------------------------------------------------------------------
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
  9. * 使用;不允许对程序代码以任何形式任何目的的再发布。
  10. * ============================================================================
  11. * $Author: liuhui $
  12. * $Id: compare.php 17063 2010-03-25 06:35:46Z liuhui $
  13. */
  14. define('IN_ECS', true);
  15. require(dirname(__FILE__) . '/includes/init.php');
  16. if (!empty($_REQUEST['goods']) && is_array($_REQUEST['goods']) && count($_REQUEST['goods']) > 1)
  17. {
  18. $where = db_create_in($_REQUEST['goods'], 'id_value');
  19. $sql = "SELECT id_value , AVG(comment_rank) AS cmt_rank, COUNT(*) AS cmt_count" .
  20. " FROM " .$ecs->table('comment') .
  21. " WHERE $where AND comment_type = 0".
  22. ' GROUP BY id_value ';
  23. $query = $db->query($sql);
  24. $cmt = array();
  25. while ($row = $db->fetch_array($query))
  26. {
  27. $cmt[$row['id_value']] = $row;
  28. }
  29. $where = db_create_in($_REQUEST['goods'], 'g.goods_id');
  30. $sql = "SELECT g.goods_id, g.goods_type, g.goods_name, g.shop_price, g.goods_weight, g.goods_thumb, g.goods_brief, ".
  31. "a.attr_name, v.attr_value, a.attr_id, b.brand_name, ".
  32. "IFNULL(mp.user_price, g.shop_price * '$_SESSION[discount]') AS rank_price " .
  33. "FROM " .$ecs->table('goods'). " AS g ".
  34. "LEFT JOIN " . $ecs->table('goods_attr'). " AS v ON v.goods_id = g.goods_id ".
  35. "LEFT JOIN " . $ecs->table('attribute') . " AS a ON a.attr_id = v.attr_id " .
  36. "LEFT JOIN " . $ecs->table('brand') . " AS b ON g.brand_id = b.brand_id " .
  37. "LEFT JOIN " . $ecs->table('member_price') . " AS mp ".
  38. "ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]' ".
  39. "WHERE g.is_delete = 0 AND $where ".
  40. "ORDER BY a.attr_id";
  41. $res = $db->query($sql);
  42. $arr = array();
  43. $ids = $_REQUEST['goods'];
  44. $attr_name = array();
  45. $type_id = 0;
  46. while ($row = $db->fetchRow($res))
  47. {
  48. $goods_id = $row['goods_id'];
  49. $type_id = $row['goods_type'];
  50. $arr[$goods_id]['goods_id'] = $goods_id;
  51. $arr[$goods_id]['url'] = build_uri('goods', array('gid' => $goods_id), $row['goods_name']);
  52. $arr[$goods_id]['goods_name'] = $row['goods_name'];
  53. $arr[$goods_id]['shop_price'] = price_format($row['shop_price']);
  54. $arr[$goods_id]['rank_price'] = price_format($row['rank_price']);
  55. $arr[$goods_id]['goods_weight'] = (intval($row['goods_weight']) > 0) ?
  56. ceil($row['goods_weight']) . $_LANG['kilogram'] : ceil($row['goods_weight'] * 1000) . $_LANG['gram'];
  57. $arr[$goods_id]['goods_thumb'] = get_image_path($row['goods_id'], $row['goods_thumb'], true);
  58. $arr[$goods_id]['goods_brief'] = $row['goods_brief'];
  59. $arr[$goods_id]['brand_name'] = $row['brand_name'];
  60. $arr[$goods_id]['properties'][$row['attr_id']]['name'] = $row['attr_name'];
  61. if (!empty($arr[$goods_id]['properties'][$row['attr_id']]['value']))
  62. {
  63. $arr[$goods_id]['properties'][$row['attr_id']]['value'] .= ',' . $row['attr_value'];
  64. }
  65. else
  66. {
  67. $arr[$goods_id]['properties'][$row['attr_id']]['value'] = $row['attr_value'];
  68. }
  69. if (!isset($arr[$goods_id]['comment_rank']))
  70. {
  71. $arr[$goods_id]['comment_rank'] = isset($cmt[$goods_id]) ? ceil($cmt[$goods_id]['cmt_rank']) : 0;
  72. $arr[$goods_id]['comment_number'] = isset($cmt[$goods_id]) ? $cmt[$goods_id]['cmt_count'] : 0;
  73. $arr[$goods_id]['comment_number'] = sprintf($_LANG['comment_num'], $arr[$goods_id]['comment_number']);
  74. }
  75. $tmp = $ids;
  76. $key = array_search($goods_id, $tmp);
  77. if ($key !== null && $key !== false)
  78. {
  79. unset($tmp[$key]);
  80. }
  81. $arr[$goods_id]['ids'] = !empty($tmp) ? "goods[]=" . implode('&amp;goods[]=', $tmp) : '';
  82. }
  83. $sql = "SELECT attr_id,attr_name FROM " . $ecs->table('attribute') . " WHERE cat_id='$type_id' ORDER BY attr_id";
  84. $attribute = array();
  85. $query = $db->query($sql);
  86. while ($rt = $db->fetch_array($query))
  87. {
  88. $attribute[$rt['attr_id']] = $rt['attr_name'];
  89. }
  90. $smarty->assign('attribute', $attribute);
  91. $smarty->assign('goods_list', $arr);
  92. }
  93. else
  94. {
  95. show_message($_LANG['compare_no_goods']);
  96. exit;
  97. }
  98. assign_template();
  99. $position = assign_ur_here(0, $_LANG['goods_compare']);
  100. $smarty->assign('page_title', $position['title']); // 页面标题
  101. $smarty->assign('ur_here', $position['ur_here']); // 当前位置
  102. $smarty->assign('categories', get_categories_tree()); // 分类树
  103. $smarty->assign('helps', get_shop_help()); // 网店帮助
  104. assign_dynamic('compare');
  105. $smarty->display('compare.dwt');
  106. ?>