我有任何存储在数据库中的信息,这些信息被选中并用单选按钮显示。我喜欢根据用户选择的单选按钮显示数据库中的信息。例如,我有一个用户可能已经完成的活动列表,并根据他们选择的内容我想展示他们可以做的其他活动。我可以让系统使用RAND()从数据库中显示随机信息。找不到任何在线教程。
答案 0 :(得分:0)
请向我们提供更多信息或您问题的具体示例,我可以告诉您,您的第二个代码段中的SQL请求可能无法提供预期结果:
SELECT * FROM activities ORDER BY RAND() LIMIT 1
你可能不想ORDER BY RAND()
(可能是不可能的)也不想LIMIT 1
,你只想从你的mysql结果中拾取一个随机行,我是对的吗?
如果我是对的,只需获取完整的结果集(没有顺序/无限制子句),使用php生成随机(在0和结果集大小之间)从结果集中选择预期的行。
答案 1 :(得分:0)
好的,所以我不知道您的数据库结构,但是假设您有一个用于活动的表格和用户所做活动的表格。为了这个例子,我们将它们称为活动和activities_by_user
活动表格将包含
列activity_id |活性
activities_by_user 将包含
列activity_id | USER_ID
所以你的显示代码看起来像这样
$query = "SELECT activities.*, activities_by_user.activity_id AS has_activity FROM activities LEFT JOIN activities_by_user ON activities_by_user.activity_id = activities.activity_id AND user_id = 1 ORDER BY RAND()";
// The user_id in just for example. There should be the id of the logged user
$result = mysqli_query($con, $query) or die('Error');
while($row = mysqli_fetch_object($result)) {
// If the has_activity field is not null, then the user does that activity
$checked = (isset($row->has_activity) && $row->has_activity != null) ? 'checked' : '';
echo '<label><input type="checkbox" name="activities[]" value="' . $row->activity_id . '" ' . $checked . ' />' . $row->activity . '</label>';
}
这将生成所有活动的复选框,并将检查用户完成的操作。