【问题标题】:Show different buttons based on current value in database PHP根据数据库PHP中的当前值显示不同的按钮
【发布时间】:2018-03-01 13:04:44
【问题描述】:

我目前正在构建一个基本的打卡/打卡系统。

我已经完成了大部分工作,但我只需要一些指导。

用户最初会看到一个页面(index.php),他们必须从下拉列表(从数据库中填充)中选择他们的姓名,然后单击“登录”。当他们点击“登录”时,他们选择的姓名将发布到下一页(clock.php),该页面显示他们的姓名并要求他们通过 2 个按钮打卡或打卡。

2 个按钮(时钟输入和时钟输出),我想根据存储在我的 MySQL 数据库中“clockAction”列中的当前值(“输入”或“输出”)隐藏其中一个按钮。

当用户单击其中一个按钮时,会向数据库中添加一个具有唯一 ID、名称和按下的按钮的条目。数据库还在自己的列中添加时间戳。

我基本上需要一个查询来查询表以查明“登录”用户是否“锁定”(由 ClockAction 值指定为“进入”),如果是,则仅显示“退出”按钮这页纸。反之亦然。但这必须是他们最近的条目。

我目前有这个 SQL 查询:

SELECT id, user, time 
FROM clock 
WHERE user = '" . $user ."' 
    ORDER BY time DESC LIMIT 1

直接在 PHPmyAdmin 上输入时有效(显然我必须手动指定 $user)。但我不确定如何将其构造成 if/else 语句。

这听起来令人困惑,但这是一个非常基本的前提,我只是不知道如何实现这一点。

提前致谢,如果有人需要任何澄清,我很乐意这样做。

杰克 :)

【问题讨论】:

  • WHERE user = blah and loggedin=logged_in and clockin=clockedin

标签: php jquery mysql database


【解决方案1】:

将您的 clockAction 字段添加到您的查询中。

SELECT id, user, time, clockAction
FROM clock 
WHERE user = '" . $user ."' 
    ORDER BY time DESC LIMIT 1

并比较该字段的内容(假设您已将查询结果读取到关联数组$result

if ($result['clockAction'] == 'In') {
    // do something
} else {
    // do the opposite
}

【讨论】:

  • 感谢您的回复!不,我还没有将结果读取到数组中,我该怎么做呢?谢谢
  • 因为我对您的应用程序以及您如何访问数据库一无所知,所以我无法告诉您。查看 PHP 文档以获取示例,例如php.net/manual/en/pdo.query.php 如果你使用 PDO
  • 也许你可以给出一些你如何从数据库中读取数据的代码
  • 我使用$link = mysqli_connect("IP.ADD.RE.SS", "username", "password", "database");连接数据库,$sql = mysqli_query($link, "SELECT clockAction FROM clock WHERE user = '" . $user."' ORDER BY time DESC LIMIT 1");获取数据。
  • 所以你只需要在$sql = mysqli_query(...之后$result = mysqli_fetch_assoc($sql);
【解决方案2】:

如果我正确理解了您的问题,您的clock.php 脚本需要查询数据库以获取当前登录用户的最新条目,并查看最后一个条目是“In”还是“Out”的clockAction。我会写一个查询:
SELECT clockAction FROM clock WHERE user = '.$user.' ORDER BY time DESC LIMIT 1
由于您只需要知道用户的最新条目是“In”还是“Out”,因此查询只需返回clockAction 列,并使用ORDER BY time DESC,您会得到一个条目的降序列表,其中最新条目位于顶部,如果“时间”按时间顺序排列,则 LIMIT 1 仅返回该最新条目。然后,您的 php 脚本可以将查询结果分配给变量,例如 $lastClockAction,并且该变量可用于呈现一个按钮或另一个按钮,如下所示:
if ($lastClockAction == 'In') //code to render "Clock Out" button<br>else // code to render "Clock In" button
即使已登录,这也将起作用用户没有任何条目,因为这样您的脚本应该只将“时钟”按钮呈现给浏览器。

【讨论】:

  • 感谢您的回复,我该如何按照您的建议分配查询结果?谢谢
  • 这取决于您在 PHP 中访问数据库的方式,是使用旧的 mysql_query,还是使用 PDO?
猜你喜欢
  • 1970-01-01
  • 2017-01-06
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
  • 2020-10-24
相关资源
最近更新 更多