【发布时间】:2013-06-06 15:25:26
【问题描述】:
好的,我们开始吧..
假设$topic['is_new'] 由“7325823”组成,accID 为 63426,然后它会更新为 7325823|63426,但如果我再次重新加载页面,它会删除 7325823|所以它只有 63426。我不想要那个。
怎么了?想不通
$accID = userid goes here;
$topic['is_new'] = "72482|81249|8124|42534|...and so on"; // user ids that i get from field in topics table
$list_of_ids = explode('|', $topic['is_new']);
// lets see if the user has already been here
if (!in_array($accID, $list_of_ids)) {
$in = isset($topic['is_new']) && !in_array($accID, $list_of_ids) ? $topic['is_new'].'|'.$accID : $topic['is_new'].'|'.$accID;
} else {
// if he havent, add him to the list
$in = $accID;
}
// yes i know, PDO is better
mysqli_query("UPDATE topics
SET num_views = num_views+1, is_new = '$in'
WHERE id = $tid") or die(mysqli_error($link));
【问题讨论】:
-
您是否要为每个用户和每个线程保存哪些用户查看了哪些线程?那是你正在处理的
O(N^M)空间,这只是自找麻烦...... -
脚本底部有一些 SQL,实际运行该 SQL 的代码在哪里?此外,您的三元运算符(从
isset($topic...开始对两种情况都做同样的事情,因此是多余的。 -
@Kolink,我有一个非常小的论坛,我发现了这个,它看起来像是一个很好的简单解决方案:stackoverflow.com/questions/6374952/…
-
不管它有多小,总要做出可以毫无困难地放大的东西。不要犯我的错误!我的网站在第一天就有 140 名用户,但在四天内就崩溃了 - 我不得不将其重新离线几天才能使其正常工作,而我仍在修补它以在三年后扩大规模!
-
@Kolink 你可能是对的。这似乎很容易。但这可能是个坏主意