Other Xử lý bài post unpublic bằng phpmyadmin

Thảo luận trong 'Development Tutorials' bắt đầu bởi MIF, 19/8/12.

1votes
5/5, 1 vote

  1. MIF

    MIF Member

    Bài viết:
    60
    Likes :
    72
    Chào các bạn

    Mình xin hướng dẫn một số câu query 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ó.

    Các thánh viên đều có thể tự xóa bài post của mình trong topic và nó để dưới dạng unpublic chỉ có mod hay admin thấy. Như vậy ngày này qua ngày khác số post rác này sẽ nhiều và làm nặng data diển đàn và phải xóa đi. Hoặc nếu 1 members nào cần phục hồi các bài đã xóa trong 1 topic hay toàn diễn đàn thì sao ?

    Ở đây ta sẽ control các bài viết đã bị memberss 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.

    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')
    


    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
    

    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 =20
    Ví dụ :

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


    Mã:
     
    DELETE  FROM xf_post WHERE
    message_state = 'deleted'
    AND thread_id =20
    

    Phục hồi toàn bộ :

    Mã:
    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ộ


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

    Mã:
    DELETE  FROM xf_post WHERE
    message_state = 'deleted'
    AND user_id =20
    AND thread_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
    AND thread_id =20
    
    Tìm trong 1 khoản thời gian cũng tương tự như trên

    Hướng dẫn [​IMG]

    Đây là các câu query để các bạn có thể control master khi điều khiển các bài post này .

    Thân ái
     
    Đang tải...
  2. santahashi

    santahashi Member

    Bài viết:
    118
    Likes :
    17
    Thanks bạn :D Bài viết rất tâm huyết :)
     
  3. phamhuudu

    phamhuudu Verified User

    Bài viết:
    1,749
    Likes :
    727
    Uầy! Bác MIF tự nhiên xuất hiện bên VietXF.org, cứ như là 1 cứu tế cho ae xenforo! Like mạnh cái này :x
     
  4. phamhuudu

    phamhuudu Verified User

    Bài viết:
    1,749
    Likes :
    727
    Nhưng mà hỏi ngu 1 tí là mấy cái này xài như thế nào thế bác MIF ơi, toàn thấy show ra nhưng chưa hướng dẫn cụ thể nên mấy gà mờ như e đọc chưa rõ cho lắm :">
     
  5. MIF

    MIF Member

    Bài viết:
    60
    Likes :
    72
    Update thêm hình ở trên. Login vào phpmyadmin làm theo 1 - 2 - 3 - 4.
     
    vanthoi1991 and phamhuudu like this.
  6. MIF

    MIF Member

    Bài viết:
    60
    Likes :
    72
    Bên kia thằng Admin có chăm lo đâu mà qua. Với lại nhìn phong cách forum bên đây pro hơn nhiều. Bên kia dỏm quá
     
    vanthoi1991 thích bài này.
  7. tacgiaviet

    tacgiaviet Member

    Bài viết:
    280
    Likes :
    82
    Bác mif làm cái add-ons luôn đi, em ủng hộ 2 tay 3 chân >:)
     
  8. MIF

    MIF Member

    Bài viết:
    60
    Likes :
    72
    Tập xài query cho lên tay :). Nghe mình đi
     
    vanthoi1991 thích bài này.
  9. phamhuudu

    phamhuudu Verified User

    Bài viết:
    1,749
    Likes :
    727
    Chuẩn bác! Cái bên kia ko hiểu ông thanhnam còn để đó làm gì sao ko del luôn cho xong!
     
  10. hd00842

    hd00842 Member

    Bài viết:
    164
    Likes :
    7
    Cái này nếu viết được thành mod thì hay quá. Mình đang cần cái mod delete nhiều thành viên cùng 1 lúc theo điều kiện mà mãi không thấy có
     
  11. bboy_nonoyes

    bboy_nonoyes Member

    Bài viết:
    277
    Likes :
    123
    Anh MIF giúp em cái này với, Xenforo ko hỗ trợ xóa toàn bộ bài viết của người dùng, em lỡ xóa người dùng rồi mà bài viết vẫn còn nguyên, các bài viết này giờ đc post bởi Guest ko à, anh hướng dẫn em xóa toàn bộ bài viết của Guest trong database với ạ!
    Database cũ em còn, nếu muốn restore riêng người dùng này thì phải làm như thế nào ạ?
    Cảm ơn anh nhiều!!! :):)
     
  12. bboy_nonoyes

    bboy_nonoyes Member

    Bài viết:
    277
    Likes :
    123
    Chưa rành hết cấu trúc Database của Xenforo nữa, các quan hệ giữa User, Thread, Post này nọ tùm lum cả lên.... Nhìn nhức đầu nên em xóa sạch luôn rồi anh MIF ơi.... :(

    Nếu anh MIF biết cách restore riêng 1 người dùng trong database đã backup thì giúp em út với! :(
    (User, thread, post, like, profile, trophy, status....)
     
  13. MIF

    MIF Member

    Bài viết:
    60
    Likes :
    72
    Cái này em pm anh yahoo a_llz để coi tình trạng sao nha.
     
    vanthoi1991 and bboy_nonoyes like this.
  14. MIF

    MIF Member

    Bài viết:
    60
    Likes :
    72
    Xóa tất cả bài post của 1 User thì ta phải làm 2 query


    Ta có member số ID là 20.

    1. Xóa topic bắt đầu bởi người đó :



    2. Xó bài post của người đó trong các topic

     
    vanthoi1991 and bboy_nonoyes like this.
  15. vanthoi1991

    vanthoi1991 Member

    Bài viết:
    542
    Likes :
    113
    tớ có học SQL mà ngu như bò ah , mấy mốn này làm sai chắc vui lắm đây , bác chủ cho ace vọc database kiểu này thì lên tay thật , mà nên nhắt ae nào ko biết mốn này chắc tete ah :D .
    Thank bác chủ nhá , cái này chắc cần cho các diễn đàn lớn lắm đây .
     
  16. MeoHoang2009

    MeoHoang2009 Member

    Bài viết:
    292
    Likes :
    61
    Tình hình giống bạn này nhưng bên mình khác 1 chút là từ khi chuyển nhà từ VBB sang XF có 1 loạt thành viên trước đó chuyển sang dạng Guest và search thì không tồn tại ID user và tên user đó. Mình muốn hỏi cách thức phục hồi các user này và các bài viết của họ. Vì có user có đến mấy trăm bài nên phải phục hồi.
     
  17. bboy_nonoyes

    bboy_nonoyes Member

    Bài viết:
    277
    Likes :
    123
    Mình đã khắc phục được, chỉ cần chịu khó thao tác SQL bằng tay trên phpMyAdmin là được!
    Còn vấn đề của bạn có thể là do user đã bị del từ trước hoặc do cái importer bị lỗi. Bạn kiểm tra lại database VBB cũ thử xem, nếu các user này vẫn còn thì bạn kiểm tra lại bản importer bạn sử dụng & tìm bản mới nhất để import thử nhé! :)
     
  18. MeoHoang2009

    MeoHoang2009 Member

    Bài viết:
    292
    Likes :
    61
    nếu import lại thì dữ liệu hiện tại có mất và số thành viên hiện tại thì sao?
     
  19. sgesvn

    sgesvn VietXF Support

    Bài viết:
    741
    Likes :
    280
    Nếu import lại thì dữ liệu từ lúc bạn backup đến hiện tại sẽ mất.
     
  20. bboy_nonoyes

    bboy_nonoyes Member

    Bài viết:
    277
    Likes :
    123
    Vậy thì bạn phải chịu khó cài đặt forum xenforo mới rồi import database cũ từ VBB sang, sau đó kiểm tra lại! :D
    Rất nhanh mà! :D
    Nếu có tồn tại các user thì bạn chịu khó thao tác SQL bằng tay 1 chút là xong! :)
     
comments powered by Disqus

Chia sẻ trang này

Đang tải...