我正在尝试让这个待提交功能正常工作。它的工作方式是,如果经理登录到他的帐户并有待审核的时间表,我希望向经理发出某种通知,告知有待审核的时间表。
到目前为止,这是我的代码,尽管它仅适用于第一个结果(第一个时间表,没有让经理提交所有其他时间表),如果这令人困惑,我深表歉意。
function pendingsubmissions($loggedInUser) {
include("table_names.inc");
global $authenticationManager;
list($qh, $num) = dbQuery("SELECT uid FROM $TIMES_TABLE WHERE submitstatus=1 OR ot_status=1");
while ($data = dbResult($qh)) {
$username = $data['uid'];
list($qh2,$num2) = dbQuery("SELECT manager FROM $USER_TABLE WHERE username='$username'");
while ($data2 = dbResult($qh2)) {
$manager = $data2['manager'];
if ($loggedInUser == $manager || $authenticationManager->hasClearance(CLEARANCE_ADMINISTRATOR))
return 1;
else
return 0;
}
}
}
第一个查询是检查数据库中是否有待处理的时间表(提交状态 1)。如果找到任何时间表,则第二个查询是找出该用户经理,然后该用户经理当前是否已登录,吐出真正的值(value)。
问题是到目前为止的第一个查询,它显示如下:
uid
---
user1
user1
user1
user2
user2
user2
第二个查询仅检查 user1 经理名称。不检查 user2。有人可以帮助解决此问题,以便它检查每个用户的经理名称
谢谢
最佳答案
如前所述,您可以使用 DISTINCT
或 GROUP BY
值,例如 uid
。
这也可以通过单个查询来实现。像这样的东西:
SELECT manager FROM $USER_TABLE WHERE username IN (SELECT DISTINCT uid FROM $TIMES_TABLE WHERE submitstatus=1 OR ot_status=1)
这可以避免您向数据库发送两个请求。
您每次都会覆盖您的值,而不是:
while ($data = dbResult($qh)) {
$username = $data['uid'];
你会想做这样的事情:
$usernames = array();
while ($data = dbResult($qh)) {
$usernames[] = $data['uid'];
关于php - 有 2 个查询的待处理时间表检查功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15314215/