Cách xử lý bài viết bị xóa dạng tạm thời bằng query trong phpmyadmin

PVS

Super Moderator
Thành viên BQT
Tham gia
28/02/2015
Bài viết
16,688
Được Like
12,676
Có 1 điều khá nhức nhối đối với diễn đàn Xenforo đó là thành viên chỉ có thể xóa bài viết của mình ở dạng tạm thời (unpublic), nghĩa là bài viết đó mặc dù bị xóa nhưng thực chất nó vẫn còn tồn tại, và chỉ có admin và mod thấy được. Và ngày qua ngày, số lượng bài viết unpublic đó ngày càng nhiều và nó sẽ khiến database chứa thêm 1 lượng rác thải vô ích. Vậy làm sao để có thể xử lý nhanh gọn số rác thải này?

Hôm nay mình xin hướng dẫn một số câu query trong phpmyadmin rất có ích khi muốn control với toàn bộ bài post và topic của thành viên hay toàn bộ diễn đàn. Đây là các chức năng Xenforo thiếu và chưa có.

Ở đây ta sẽ control các bài viết đã bị member xóa dưới dạng unpublic để xóa hẳn hay phục hồi. Các bạn chú ý các câu query này rất dễ và không phức tạp gì cả, nhưng lần đầu làm thì nên làm thử ở localhost hay backup trước khi Delete hay Update , còn Select thì ko sao.

Việc đầu tiên các bạn cần vào phpmyadmin, sau đó vào database Xenforo của bạn, rồi chọn table xf_post và chọn tab SQL như sau:

1.png

Sau đó, tùy vào nhu cầu của bạn có thể chọn các câu query dưới đây để áp dụng.

1. Toàn bộ bài viết đã bị thành viên xóa dưới dạng unpublic

Tìm toàn bộ

Mã:
SELECT * FROM xf_post
WHERE message_state = 'deleted'

Xóa toàn bộ :
Mã:
DELETE FROM xf_post WHERE
message_state = 'deleted'

Phục hồi toàn bộ :
Mã:
UPDATE xf_post
SET message_state = 'visible'
WHERE message_state = 'deleted'

Toàn bộ bài viết đã bị thành viên xóa dưới dạng unpublic trong khoảng thời gian. Các bạn nên chú ý cú pháp này vì nó khá hữu hiệu khi phải xử lý trong 1 khoảng time nhất định.

Cú pháp : UNIX_TIMESTAMP( 'YEAR-MONTH-DAY 00:00:00') (các bạn tùy chọn, nhớ là month trước day nha)

Tìm trước 30 tháng 7 bài viết đã bị thành viên xóa dưới dạng unpublic :
Mã:
SELECT * FROM xf_post
WHERE message_state = 'deleted'
AND post_date < UNIX_TIMESTAMP( '2012-07-30 00:00:00')

Tìm trong tháng 6 tới 30 tháng 7 bài viết đã bị thành viên xóa dưới dạng unpublic
Mã:
SELECT * FROM xf_post
WHERE message_state = 'deleted'
AND post_date > UNIX_TIMESTAMP( '2012-06-30 00:00:00')
AND post_date < UNIX_TIMESTAMP( '2012-07-30 00:00:00')

Xóa toàn bộ bài viết đã bị thành viên xóa dưới dạng unpublic trước 30 tháng 7
Mã:
DELETE FROM xf_post
WHERE message_state = 'deleted'
AND post_date < UNIX_TIMESTAMP( '2012-07-30 00:00:00')

Xóa toàn bộ bài viết trong tháng 6 tới 30 tháng 7 đã bị thành viên xóa dưới dạng unpublic
Mã:
DELETE FROM xf_post
WHERE message_state = 'deleted'
AND post_date > UNIX_TIMESTAMP( '2012-06-30 00:00:00')
AND post_date < UNIX_TIMESTAMP( '2012-07-30 00:00:00')

Phục hồi toàn bộ bài viết trong tháng 6 tới 30 tháng 7 đã bị thành viên xóa dưới dạng unpublic
Mã:
UPDATE xf_post
SET message_state = 'visible'
WHERE message_state = 'deleted'
AND post_date > UNIX_TIMESTAMP( '2012-06-30 00:00:00')
AND post_date < UNIX_TIMESTAMP( '2012-07-30 00:00:00')

Giá sử ta có member có id = 20
2. Toàn bộ bài viết đã bị 1 thành viên xóa dưới dạng unpublic có id là 20

Mã:
SELECT * FROM xf_post
WHERE message_state = 'deleted'
AND user_id =20

Xóa toàn bộ :
Mã:
DELETE FROM xf_post WHERE
message_state = 'deleted'
AND user_id =20

Phục hồi toàn bộ :
Mã:
UPDATE xf_post
SET message_state = 'visible'
WHERE message_state = 'deleted'
AND user_id =20

Tương tự cũng tìm trong tháng và thêm biến And user_id =20 vào

Tìm trước 30 tháng 7 bài viết đã bị thành viên có ID 20 xóa dưới dạng unpublic :
Mã:
SELECT * FROM xf_post
WHERE message_state = 'deleted'
AND post_date < UNIX_TIMESTAMP( '2012-07-30 00:00:00')
AND user_id =20

Xóa trong tháng 6 tới 30 tháng 7 bài viết đã bị thành viên có ID 20 xóa dưới dạng unpublic
Mã:
DELETE FROM xf_post
WHERE message_state = 'deleted'
AND post_date > UNIX_TIMESTAMP( '2012-06-30 00:00:00')
AND post_date < UNIX_TIMESTAMP( '2012-07-30 00:00:00')
AND user_id =20

Giả sử ta có theard có id = 10
3. Toàn bộ bài viết đã bị thành viên xóa dưới dạng unpublic trong topic có id là 10


Tương tự như trên nhưng thay
Mã:
AND user_id =20

thành
Mã:
AND thread_id =10

Ví dụ :
Mã:
DELETE FROM xf_post WHERE
message_state = 'deleted'
AND thread_id =10

Phục hồi toàn bộ :
Mã:
UPDATE xf_post
SET message_state = 'visible'
WHERE message_state = 'deleted'
AND thread_id =10

4. Toàn bộ bài viết đã bị thành viên có id là 20 dưới dạng unpublic trong topic có id là 10

Tìm toàn bộ

Mã:
SELECT * FROM xf_post
WHERE message_state = 'deleted'
AND user_id =20
AND thread_id =10

Xóa toàn bộ :
Mã:
DELETE FROM xf_post WHERE
message_state = 'deleted'
AND user_id =20
AND thread_id =10

Phục hồi toàn bộ :
Mã:
UPDATE xf_post
SET message_state = 'visible'
WHERE message_state = 'deleted'
AND user_id =20
AND thread_id =10

Tìm trong 1 khoảng thời gian cũng tương tự như trên. Chúc các bạn thành công.


Nguồn: vietdesigner.net​
 

Hướng dẫn sử dụng

XenForo 1 XenForo 2
Translate by PVS

Dịch vụ XenForo của VNXF

Mr. Tuấn

Mobile/Zalo: 0988 488 096

Telegram: bluekpro

Email: [email protected]

Nhà Tài Trợ

Mút Xốp Không Gian
pallet Thịnh Phát
Top Bottom