新增评价与讨论:打分 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 秒
This commit is contained in:
2026-09-22 11:42:27 +08:00
parent 7d199d5b3a
commit a2c26ad002
7 changed files with 1081 additions and 2 deletions
+13
View File
@@ -16,6 +16,9 @@ if (!empty($keyword)) {
} else {
$movies = getMovies();
}
// 挂上评价概况(几条评价 / 平均分),一次查询,列表里只展示有评价的电影
attachReviewStatsToMovies($movies);
?>
<!DOCTYPE html>
<html lang="zh-CN">
@@ -97,6 +100,11 @@ if (!empty($keyword)) {
flex-wrap: wrap;
gap: 4px 8px;
}
/* 评价均分(有人评价过才显示) */
.meta-rating {
color: var(--primary);
font-weight: 600;
}
@media (max-width: 600px) {
.search-bar {
flex-wrap: wrap;
@@ -176,6 +184,11 @@ if (!empty($keyword)) {
🏛️ <?= h($movie['cinema_name']) ?>
</span>
<?php endif; ?>
<?php if (!empty($movie['review_count'])): ?>
<span class="meta-rating" title="共 <?= (int)$movie['review_count'] ?> 条评价">
⭐ <?= $movie['review_avg'] ?><span style="color: var(--text-secondary); font-weight: 400;">/10</span>
</span>
<?php endif; ?>
</div>
<!-- 观影人 -->
<?php if (!empty($movie['viewers'])): ?>