Baiklah, soalan saya agak spesifik dan sukar untuk dijelaskan. Jadi saya akan cuba permudahkan.
Saya mempunyai jadual MySQL yang memaparkan "petua" daripada tapak web. Gesaan diisih mengikut integer dalam lajur Pesanan. Jadi jadual kelihatan seperti ini: id (incrementing int), prompt (varchar), order (int).
Sekarang apabila gesaan pertama ditunjukkan kepada pengguna, ia akan ditunjukkan sehingga pengguna mengesahkan, kemudian gesaan seterusnya akan ditunjukkan dan seterusnya.
Saya membuat pertanyaan untuk mendapatkan petua seterusnya berdasarkan petua terakhir pengguna yang disahkan:
SELECT hint FROM hints WHERE `order` > $last_seen_item_order ORDER BY `order` DESC LIMIT 1
Pertanyaan ini sangat berguna. Walau bagaimanapun, kadangkala kita perlu menambah gesaan baharu, biasanya bukan pada gesaan terakhir, tetapi di suatu tempat di tengah. Jadi sebagai contoh, pengguna melihat gesaan terakhir dalam urutan #6, tetapi kami menambah gesaan baharu pada kedudukan #3. Gesaan baharu ini tidak akan ditunjukkan kepada pengguna ini kerana kami telah menyimpan bahawa dia telah melihat gesaan #6.
Adakah cara untuk menguruskan masalah ini? Mungkin hanya satu atau dua pertanyaan MySQL diperlukan?
Terima kasih terlebih dahulu untuk sebarang bantuan dan petua.
EDIT: Setiap pengguna mempunyai "Status Dilihat" mereka sendiri. Kami hanya menyimpannya dalam PHP $_SESSION['last_seen_item_order'].
Anda tidak boleh menguruskannya dengan logik ini.
Untuk ini, anda perlu mengekalkan lajur tambahan -
seen
Jika pengguna sudah melihatnyahints
,您可以将其设置为1
Jadi pertanyaan anda ialah -NOTA - Inilah yang saya cadangkan. Anda boleh mempunyai banyak idea lain.
Edit - Jika anda ingin mengekalkan gesaan bagi setiap pengguna, maka anda mungkin mempunyai dua pilihan untuk mengekalkan
seen
.json
format dikekalkan untuk pengguna.user_hints_see
, yang mengandungiid
(kenaikan),user_id
,hint_id
,user_hints_see
的单独表,其中包含id
(自增)、user_id
、hint_id
、seen
Column.