根据用户在php中的选择生成信息

时间:2016-12-23 15:01:53

标签: php random mysqli

我有任何存储在数据库中的信息,这些信息被选中并用单选按钮显示。我喜欢根据用户选择的单选按钮显示数据库中的信息。例如,我有一个用户可能已经完成的活动列表,并根据他们选择的内容我想展示他们可以做的其他活动。我可以让系统使用RAND()从数据库中显示随机信息。找不到任何在线教程。

2 个答案:

答案 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>';
}

这将生成所有活动的复选框,并将检查用户完成的操作。