laoyang
|
275bd9d80f
|
评价区改成「按钮展开表单」,评论支持两级回复
页面默认不出现任何输入框,要写什么就点对应那个按钮:
- detail.php:评价区的「写评价 / 修改我的评价 / 评论 / 回复」都做成按钮,
用原生 <details>/<summary> 折叠,点开才展开表单,提交后整页刷新自动收起。
零 JS、键盘可用。没评价过只在顶部有「写评价」;评价过则该按钮消失,改在自己
那条评价下面出现「修改我的评价」。一条评价都没有时显示「还没有评价,等你来评一个。」
- lib/reviews.php:评论改两级平铺。parent_id 为空 = 顶层评论,非空 = 对某条评论的
回复;写「回复的回复」时由 addReviewComment 规范化回顶层评论,所以库里最多两层、
页面永远只缩进一次,来回多少轮都不会越缩越窄。被回复者另存 reply_to_admin_id
(存「人」不存评论 id,对方那条被删也不会悬空),页面用「回复 @某某」标出。
deleteReviewComment 删顶层评论时连带清掉它的回复。
- lib/db.php:review_comments 增 parent_id / reply_to_admin_id 两列 + 幂等迁移,
并给 parent_id 建索引。**修一个会让老库升级白屏的顺序 bug**:新列上的 CREATE INDEX
必须排在 ALTER TABLE 补列之后 —— 建表用的是 CREATE TABLE IF NOT EXISTS,对线上
已存在的旧表不生效,索引跑在补列之前会报 no such column: parent_id,整个 initDB
挂掉。全新安装看不出来,是 e2e 的「造旧库再跑一遍初始化」专测抓到的。
- README.md:命名由「评价与讨论」改为「评价与评论」,补上按钮交互、两级平铺、
回复 @某某 与新表字段的说明。
回归:reviews_e2e 84/84、fetch_movie 76/76、storage 196/196;A/B 47 个响应中
仅详情页相关 6 个有差异,且经折叠区块比对确认差异全部限定在评价区内。
线上 PHP 7.4.30 / 8.1.7 双版本迁移与写链路(顶层评论→回复→回复的回复→清理)全部通过。
|
2026-09-22 16:09:48 +08:00 |
|
laoyang
|
558c0db576
|
评价感受「感动」的图标换成 💖,修缺字形
🥹(U+1F979,含泪微笑)是 Emoji 14.0 才新增的码位(2021-09),
较旧的系统 emoji 字体里没有这个字形——例如本机 Segoe UI Emoji 的
cmap 里就没有 U+1F979,Windows 上页面的「感动」图标就显示成空白。
其余 11 个感受用的都是 Emoji 1.0~11.0(2010–2018)的老码位,显示正常。
现换成 💖(U+1F496,Emoji 1.0 / 2010),各平台字体都有字形。
感受在库里只存 key(moved),emoji 与文案统一在 feelingCatalog() 里,
所以这是纯显示层变更:不需要数据迁移,已有的评价完全不受影响。
同时补了一条约定注释:以后加新感受只用 Emoji 11.0(2018)及以前的
老码位,并在注释里一律写码位而不写 emoji 字符本身。
- lib/reviews.php feelingCatalog() 中 moved 的 emoji;新增约定注释
- README.md 同步感受清单里的图标
|
2026-09-22 15:07:10 +08:00 |
|
laoyang
|
dc5e788f27
|
评价本身也能填「观后感受」
- lib/db.php:reviews 表新增 feelings 列。建表语句里带上,同时补一条
ALTER TABLE 迁移 —— 上一版已经上线过没有该列的 reviews 表,老库要能自动补列。
- lib/reviews.php:saveReview() 接收感受并落库;getMovieReviews()/getMyReview()
把 feelings 解析成 key 列表(旧记录为 NULL → 空数组,不报错)。
- detail.php:评价表单加了「我看完的感受(可多选)」,与讨论用的是同一套感受;
修改评价时原勾选自动回填,取消勾选即清空;已保存的感受在评价正文下方以只读标签展示。
感受仍然只存 key(happy/sad/…),emoji 与文案统一在 feelingCatalog() 里维护。
|
2026-09-22 13:03:04 +08:00 |
|
laoyang
|
a2c26ad002
|
新增评价与讨论:打分 1-10 + 观后感受 emoji
- 规则:只要有登录账号就能评价,与「是不是观影人」无关;评价归属 admins
- 数据层 lib/reviews.php:
· reviews(movie_id + admin_id 唯一索引,一个账号一部电影只一条)
· review_comments(feelings 存感受 key 的 JSON 数组)
· 感受目录 feelingCatalog():12 种,每种一个专属 emoji,文案与 emoji 不入库
- detail.php 新增「💬 评价与讨论」:1-10 打分(原生 radio,无 JS 也能用)、
评价正文、评价列表、每条评价下的讨论与多选感受、均分概况
- index.php:有评价的电影卡片显示 ⭐ 均分
- delete.php:删电影时显式清理评价与讨论(SQLite 外键级联默认未开启)
- 顺带修一个隐患:delete.php 取一行后没关游标,读锁一直挂着,
后续同一连接上的 DELETE 拿不到写锁,页面会卡满 60 秒
|
2026-09-22 11:42:27 +08:00 |
|