Hãy đăng ký thành viên để có thể dễ dàng trao đổi, giao lưu và chia sẻ về kiến thức đồ họa.
  1. Hãy đăng ký subscribe kênh Youtube mới của Việt Designer tại địa chỉ: Youtube.com/VietDesignerChannel để theo dõi các video về thiết kế đồ họa. Do trước đó kênh cũ bị Youtube quét không rõ lý do, trong thời gian chờ kháng cáo nếu các bạn thấy video trên diễn đàn bị die không xem được thì có thể vào kênh mới để tìm xem video sơ cua nhé.
    Loại bỏ thông báo

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

Chủ đề thuộc danh mục 'Hướng dẫn - Thủ thuật Xenforo' được đăng bởi Phạm Hữu Dư, 15/10/14.

Lượt xem: 8,920

  1. Phạm Hữu Dư phamhuudu.com

    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:

    FSEvPu8.jpg

    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ộ

    Code:
    SELECT * FROM xf_post
    WHERE message_state = 'deleted'
    
    Xóa toàn bộ :
    Code:
    DELETE FROM xf_post WHERE
    message_state = 'deleted'
    
    Phục hồi toàn bộ :
    Code:
    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 :
    Code:
    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
    Code:
    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
    Code:
    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
    Code:
    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
    Code:
    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

    Code:
    SELECT * FROM xf_post
    WHERE message_state = 'deleted'
    AND user_id =20
    
    Xóa toàn bộ :
    Code:
    DELETE FROM xf_post WHERE
    message_state = 'deleted'
    AND user_id =20
    
    Phục hồi toàn bộ :
    Code:
    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 :
    Code:
    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
    Code:
    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
    Code:
    AND user_id =20
    
    thành
    Code:
    AND thread_id =20
    
    Ví dụ :
    Code:
    SELECT * FROM xf_post
    WHERE message_state = 'deleted'
    AND thread_id =20
    
    Xóa toàn bộ :
    Code:
    DELETE FROM xf_post WHERE
    message_state = 'deleted'
    AND thread_id =20
    
    Phục hồi toàn bộ :
    Code:
    UPDATE xf_post
    SET message_state = 'visible'
    WHERE message_state = 'deleted'
    AND thread_id =20
    
    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ộ
    Code:
    SELECT * FROM xf_post
    WHERE message_state = 'deleted'
    AND user_id =20
    AND thread_id =20
    
    Xóa toàn bộ :
    Code:
    DELETE FROM xf_post WHERE
    message_state = 'deleted'
    AND user_id =20
    AND thread_id =20
    
    Phục hồi toàn bộ :
    Code:
    UPDATE xf_post
    SET message_state = 'visible'
    WHERE message_state = 'deleted'
    AND user_id =20
    AND thread_id =20
    
    Tìm trong 1 khoản thời gian cũng tương tự như trên.

    Bài viết tổng hợp và tham khảo từ thành viên MIF - vxf

    ...
    MidsideElite thích bài viết này
  2. Phạm Hữu Dư

    Phạm Hữu Dư phamhuudu.com Ban quản trị

    Ví dụ, mình muốn xóa hàng loạt bài viết unpublic, mình sẽ thêm câu query sau:

    6NlNJCg.jpg

    Ấn Go và nó sẽ cho ra kết quả bao nhiêu post unpublic đã bị xóa:

    [​IMG]

    Rất đơn giản :)
    tmcodon thích bài viết này
  3. tmcodon

    tmcodon Mới đăng kí

    J4WMDLg.jpg
    DJifBEB.jpg
    Mình làm xong, báo xóa đc rồi nhưng vào diễn đàn vẫn còn :(
  4. Phạm Hữu Dư

    Phạm Hữu Dư phamhuudu.com Ban quản trị

    tmcodon cái đó phải vào table xf_profile_post nha, và làm tương tự như trên, sửa xf_post thành xf_profile_post ;)
    tmcodon thích bài viết này
  5. tmcodon

    tmcodon Mới đăng kí

    Ak, mình nhầm với mục mình đang tìm kiếm. Hi
    Đang muốn làm cả 2 điều này, tks bạn đã giúp.
  6. tmcodon

    tmcodon Mới đăng kí

    Vậy mình nghĩ cách nhanh hơn là chọn table xf_profile_post rồi empty đi, khả quan đấy chứ.
  7. Phạm Hữu Dư

    Phạm Hữu Dư phamhuudu.com Ban quản trị

    tmcodon bạn mà empty đi thì chẳng còn cái tin nhắn trên trang cá nhân nào còn cả! Backup data lại và thử đi :v
  8. buiphan

    buiphan Thành viên cấp 1

    Bây giờ bọn spam nó còn post vào hộp thư. Làm thế nào để xóa toàn bộ tin trong hộp thư bác Phạm Hữu Dư ?
  9. Phạm Hữu Dư

    Phạm Hữu Dư phamhuudu.com Ban quản trị

    buiphan muốn động vào inbox thì coi ở table xf_conversation_message nhá! Nếu thấy spam quá, muốn xóa sạch thì cứ Empty thôi :)
  10. banbaonylong

    banbaonylong Ko phải assmin

    đụng tới SQL lun à :P fải học wa SQL thì mới vận dụng sáng tạo đc ông
  11. buiphan

    buiphan Thành viên cấp 1

    Nhân tiện nhờ bác Phạm Hữu Dư chỉ cho em cách chèn quảng cáo google vào dưới thống kê của forum như ở đây với :D
  12. Phạm Hữu Dư

    Phạm Hữu Dư phamhuudu.com Ban quản trị

    banbaonylong hehe tui ko có rành, cái này là học từ ngta thôi! Có time sẽ học thêm :D
    buiphan dưới thống kê là sao nhỉ? cho xin cái hình screenshot nào :-?
    buiphan thích bài viết này
  13. buiphan

    buiphan Thành viên cấp 1

    Đây bác. Mà bác có nick ym không cho em hỏi cái này tí, liên quan tới quảng cáo GA nên không tiện hỏi ở đây :D
    CrO2AtA.jpg
  14. Phạm Hữu Dư

    Phạm Hữu Dư phamhuudu.com Ban quản trị

    buiphan cái đó là qc Coca Cola chứ có phải GA đâu! Cái đó thì đặt trong template PAGE_CONTAINER nhé!
  15. buiphan

    buiphan Thành viên cấp 1

    Dưới hay trên dòng nào bác Phạm Hữu Dư em cũng vào đó đặt mà không được
  16. Phạm Hữu Dư

    Phạm Hữu Dư phamhuudu.com Ban quản trị

    Đặt dưới <xen:hook name="page_container_content_top" />
  17. buiphan

    buiphan Thành viên cấp 1

    Ok rồi bác, thanks bác nhé. Nhưng muốn nó chỉ xuất hiện ở frum, không xuất hiện ở trang Portal thì làm sao bác ?
  18. Phạm Hữu Dư

    Phạm Hữu Dư phamhuudu.com Ban quản trị

    Thế thì phải gán cho nó lệnh điều kiện <xen:if>, cái này bác phải tìm hiểu trên Google rồi! Để có time sẽ làm 1 bài viết tổng hợp các lệnh điều kiện trong Xenforo :)
    buiphan thích bài viết này
  19. buiphan

    buiphan Thành viên cấp 1

Ủng hộ diễn đàn