· 6 years ago · Apr 23, 2019, 06:42 AM
1<?php
2public function getProducts($data = array()) {
3 $sql = "SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN `oc_product_description` pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";
4
5 if (!empty($data['filter_name'])) {
6 $sql .= " AND pd.name LIKE '" . $this->db->escape($data['filter_name']) . "%'";
7 }
8
9 if (!empty($data['filter_model'])) {
10 $sql .= " AND p.model LIKE '" . $this->db->escape($data['filter_model']) . "%'";
11 }
12
13 if (isset($data['filter_price']) && !is_null($data['filter_price'])) {
14 $sql .= " AND p.price LIKE '" . $this->db->escape($data['filter_price']) . "%'";
15 }
16
17 if (isset($data['filter_quantity']) && !is_null($data['filter_quantity'])) {
18 $sql .= " AND p.quantity = '" . (int)$data['filter_quantity'] . "'";
19 }
20
21 if (isset($data['filter_status']) && !is_null($data['filter_status'])) {
22 $sql .= " AND p.status = '" . (int)$data['filter_status'] . "'";
23 }
24
25 $sql .= " GROUP BY p.product_id";
26
27 $sort_data = array(
28 'pd.name',
29 'p.model',
30 'p.price',
31 'p.quantity',
32 'p.status',
33 'p.sort_order'
34 );
35
36 if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
37 $sql .= " ORDER BY " . $data['sort'];
38 } else {
39 $sql .= " ORDER BY pd.name";
40 }
41
42 if (isset($data['order']) && ($data['order'] == 'DESC')) {
43 $sql .= " DESC";
44 } else {
45 $sql .= " ASC";
46 }
47
48 if (isset($data['start']) || isset($data['limit'])) {
49 if ($data['start'] < 0) {
50 $data['start'] = 0;
51 }
52
53 if ($data['limit'] < 1) {
54 $data['limit'] = 20;
55 }
56
57 $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
58 }
59
60 $query = $this->db->query($sql);
61
62 return $query->rows;
63 }
64
65--------------------------------------------------------------------------------------------------
66
67CREATE TABLE IF NOT EXISTS `oc_product` (
68 `product_id` int(11) NOT NULL AUTO_INCREMENT,
69 `model` varchar(64) NOT NULL,
70 `sku` varchar(64) NOT NULL,
71 `upc` varchar(12) NOT NULL,
72 `ean` varchar(14) NOT NULL,
73 `jan` varchar(13) NOT NULL,
74 `isbn` varchar(17) NOT NULL,
75 `mpn` varchar(64) NOT NULL,
76 `location` varchar(128) NOT NULL,
77 `quantity` int(4) NOT NULL DEFAULT '0',
78 `stock_status_id` int(11) NOT NULL,
79 `image` varchar(255) DEFAULT NULL,
80 `manufacturer_id` int(11) NOT NULL,
81 `shipping` tinyint(1) NOT NULL DEFAULT '1',
82 `price` decimal(15,4) NOT NULL DEFAULT '0.0000',
83 `points` int(8) NOT NULL DEFAULT '0',
84 `tax_class_id` int(11) NOT NULL,
85 `date_available` date NOT NULL DEFAULT '0000-00-00',
86 `weight` decimal(15,8) NOT NULL DEFAULT '0.00000000',
87 `weight_class_id` int(11) NOT NULL DEFAULT '0',
88 `length` decimal(15,8) NOT NULL DEFAULT '0.00000000',
89 `width` decimal(15,8) NOT NULL DEFAULT '0.00000000',
90 `height` decimal(15,8) NOT NULL DEFAULT '0.00000000',
91 `length_class_id` int(11) NOT NULL DEFAULT '0',
92 `subtract` tinyint(1) NOT NULL DEFAULT '1',
93 `minimum` int(11) NOT NULL DEFAULT '1',
94 `sort_order` int(11) NOT NULL DEFAULT '0',
95 `status` tinyint(1) NOT NULL DEFAULT '0',
96 `viewed` int(5) NOT NULL DEFAULT '0',
97 `date_added` datetime NOT NULL,
98 `date_modified` datetime NOT NULL,
99 `smp_related_products` int(11) NOT NULL DEFAULT '0',
100 `smp_url_category_id` int(11) DEFAULT NULL,
101 `product_href` varchar(1000) DEFAULT NULL,
102 `custom_discount` varchar(255) DEFAULT NULL,
103 `custom_discount_description` varchar(255) CHARACTER SET utf8 COLLATE utf8_persian_ci DEFAULT NULL,
104 `custom_percent` int(11) DEFAULT NULL,
105 PRIMARY KEY (`product_id`)
106) ENGINE=MyISAM AUTO_INCREMENT=458 DEFAULT CHARSET=utf8;
107
108
109
110
111?>