来自Way/coding method to do activitylist/log
我在上述问题上使用了已接受的答案,通过两个表格来描述活动,其他表格用于活动本身。
table: activitylist
Columns:
id, description, date
table: activities
Column:
id, aID, uID, date
aID是活动ID,uID是用户ID。 activity id是表'activity列'中的id
我现在可以输出:
person ate another persons apple
由于此文本是非个人的,可以用于所有..
如果我想输出怎么办?
Michael ate Peters apple
(实施例)
这需要在说明/文字中分开吗?
我想到你需要在某处包含迈克尔和彼得的uID,但在哪里?我应该如何处理分裂的描述?
我的意思是我不能在表活动列表中添加一行描述:“迈克尔吃了彼得斯苹果” 因为我试图使这些描述具有普遍性,所以它可能是亚当和朱莉娅对迈克尔和彼得的实施......
希望您理解,如果问题请发表评论..
更新: 结论:
这是一个活动列表,显示在页面上完成的所有活动,所有用户都可以看到。然后我想展示一个活动,“迈克评论彼得斯照片”。如何在包含用户时进行活动描述(本例:Mike,peter)
答案 0 :(得分:1)
只需在活动中添加另一列,并将其命名为uID2。然后在你的描述中添加类似'## UID1 ##评论## UID2 ##的照片',然后使用str_replace替换## UID1 ##和## UID2 ##,如下所示:
$description = activitylist['description'];
$description = str_replace('##UID1##', $uid, $description);
$description = str_replace('##UID2##', $uid2, $description);
您当然必须查询您的数据库,将id替换为与该用户ID关联的名称,但这是您可以在当前设置中使用的基本逻辑。
答案 1 :(得分:0)
如果我要这样做,我会让所有varchars存储可由sprintf解析的字符串。
$uid1 = 'Frank'; $uid2 = 'George';
$format = '%s ate %s\'s apple';
$ret = sprintf($format, $uid1, $uid2);
echo $ret; // Frank ate George's apple