<?php
/**
* Thay đổi thứ tự ưu tiên hiển thị của các item hot
* Bảng item (id int auto_increment primary key, meta_data text), hot_item (id int primary key, view_order int)
* view_order lớn nhất ưu tiên hiển thị trước nhất (ORDER BY view_order DESC)
*/
class HotItem {
private $_conn = null;
public function HotItem() {
$this->_conn = mysql_connect('localhost', 'root', 'jutlujthoj') or die('Connect failed to MySQL Server');
mysql_select_db('shop', $this->_conn);
}
public function __destruct() {
if (is_object($this->_conn)) {
mysql_close($this->_conn);
}
}
/**
* Thêm một item vào danh sách hot
* view_order của item mới thêm sẽ phải lớn nhất (ưu tiên hiển thị trước nhất)
* @param int $id Mã của item
*/
function add($id) {
$sql = "SELECT IFNULL(MAX(view_order), 0) + 1 as newOrder FROM hot_item";
$result = mysql_query($sql, $this->_conn);
$row = mysql_fetch_assoc($result);
$newOrder = $row['newOrder'];
$sql = "INSERT INTO hot_item SET id=$id, view_order=$newOrder";
mysql_query($sql, $this->_conn);
}
/**
* Xóa một item ra khỏi danh sách hot
* @param int $id Mã của item
*/
function remove($id) {
$sql = "DELETE FROM hot_item WHERE id=$id";
mysql_query($sql, $this->_conn);
}
/**
* Chuyển đổi thứ tự ưu tiên của hai item
* @param int $id1 Mã của item thứ nhất
* @param int $id2 Mã của item thứ hai
*/
function swap($id1, $id2) {
$sql = "SELECT id, view_order FROM hot_item WHERE id IN ($id1, $id2)";
$result = mysql_query($sql, $this->_conn);
$row1 = mysql_fetch_assoc($result);
$row2 = mysql_fetch_assoc($result);
$sql = "UPDATE hot_item SET view_order=" . $row2['view_order'] . " WHERE id=" . $row1['id'];
mysql_query($sql, $this->_conn);
$sql = "UPDATE hot_item SET view_order=" . $row1['view_order'] . " WHERE id=" . $row2['id'];
mysql_query($sql, $this->_conn);
}
/**
* Chuyển một item lên đầu danh sách hot, tức là có view_order lớn nhất
*/
function moveFirst($id) {
$sql = "SELECT MAX(view_order) + 1 as newOrder FROM hot_item";
$result = mysql_query($sql, $this->_conn);
$row = mysql_fetch_assoc($result);
$newOrder = $row['newOrder'];
$sql = "UPDATE hot_item SET view_order=$newOrder WHERE id=$id";
mysql_query($sql, $this->_conn);
}
/**
* Chuyển một item xuống cuối danh sách hot, tức là có view_order nhỏ nhất
*/
function moveLast($id) {
$sql = "SELECT MIN(view_order) - 1 as newOrder FROM hot_item";
$result = mysql_query($sql, $this->_conn);
$row = mysql_fetch_assoc($result);
$newOrder = $row['newOrder'];
$sql = "UPDATE hot_item SET view_order=$newOrder WHERE id=$id";
mysql_query($sql, $this->_conn);
}
/**
* Đẩy vị trí lên trên item gần nhất (swap với cái đang ưu tiên hơn liền kề)
* Có 5 hot item, view_order: 7-5-2-1-0. Đang đứng thứ 3 (view_order = 2) muốn lên thứ 2 (view_order = 5)
*/
function moveNext($id, $curOrder) {
$sql = "SELECT id, view_order FROM hot_item WHERE view_order > $curOrder ORDER BY view_order ASC LIMIT 1";
$result = mysql_query($sql, $this->_conn);
if (mysql_num_rows($result) != 1) return false;
$row = mysql_fetch_assoc($result);
$newOrder = $row['view_order'];
$cId = $row['id'];
$sql = "UPDATE hot_item SET view_order=$newOrder WHERE id=$id";
mysql_query($sql, $this->_conn);
$sql = "UPDATE hot_item SET view_order=$curOrder WHERE id=$cId";
mysql_query($sql, $this->_conn);
}
function movePrevious($id, $curOrder) {
$sql = "SELECT id, view_order FROM hot_item WHERE view_order < $curOrder ORDER BY view_order DESC LIMIT 1";
$result = mysql_query($sql, $this->_conn);
if (mysql_num_rows($result) != 1) {
echo '???';
return false;
}
$row = mysql_fetch_assoc($result);
$newOrder = $row['view_order'];
$cId = $row['id'];
$sql = "UPDATE hot_item SET view_order=$newOrder WHERE id=$id";
mysql_query($sql, $this->_conn);
$sql = "UPDATE hot_item SET view_order=$curOrder WHERE id=$cId";
mysql_query($sql, $this->_conn);
}
/**
* Tổ chức, sắp xếp lại giá trị trường view_order
* Item kém ưu tiên nhất có view_order = 1 và tăng dần đến hết là item được ưu tiên nhất
*/
function reOrder() {
$viewOrder = 1;
$sql = "SELECT id FROM hot_item ORDER BY view_order ASC";
$result = mysql_query($sql, $this->_conn);
while ($row = mysql_fetch_assoc($result)) {
$id = $row['id'];
$sql = "UPDATE hot_item SET view_order = $viewOrder WHERE id = $id";
mysql_query($sql, $this->_conn);
$viewOrder++;
}
}
}
$hot = new HotItem();
$hot->reOrder();
?>
Title:
Manage Hot item and arrange order
Description:
<?php /** * Thay đổi thứ tự ưu tiên hiển thị của các item hot * Bảng item (id int auto_increment primary key, meta_data text), hot_ite...
...
Rating:
4