【问题标题】:Generating information based on users choice in php根据用户在php中的选择生成信息
【发布时间】:2016-12-23 15:01:53
【问题描述】:

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

【问题讨论】:

  • 为什么有这么多查询只是不同的ID
  • 这些查询从数据库中获取活动并将它们显示在单选按钮中

标签: php random mysqli


【解决方案1】:

请给我们更多信息或您的问题的具体示例,我只能告诉您,您在第二个代码 sn-p 中的 SQL 请求可能不会给出预期的结果:

SELECT * FROM activities ORDER BY RAND() LIMIT 1

你可能不想ORDER BY RAND()(可能是不可能的)也不想LIMIT 1,你只想从你的mysql结果中随机抽取一行,对吗?

如果我是对的,只需获取完整的结果集(没有 order by / no limit 子句),使用 php 生成一个随机数(介于 0 和结果集大小之间)从结果集中选择预期的行。

【讨论】:

    【解决方案2】:

    好的,所以我不知道您的数据库结构,但假设您有一个活动表和用户活动表。为了这个例子,我们将它们称为活动和活动_by_user

    activities 表将包含列

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

    这将为所有活动生成复选框,并检查用户所做的事情。

    【讨论】:

    • 我不想对登录用户执行此操作,它适用于访问该站点的任何人
    • 那你将如何保存他的选择?
    • 我不想保存
    • 好吧,当用户单击复选框时,您希望显示他可以做的另一件事吗?或者我错过了什么。因为如果你不保存它们,那么刷新时一切都消失了,除非你使用 cookie 或本地存储
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    相关资源
    最近更新 更多