根据登录用户筛选结果(Joomla 3.2.2)

时间:2014-03-02 10:09:48

标签: mysql sql joomla

这是我的第一篇文章,所以我希望我使用了正确的地方.........

如果有人可以帮助解决此问题,我将非常感激。

我的网站上有一个数据表,需要对其进行自定义,以便根据登录用户分配给的用户组的访问级别仅显示允许的信息。所以这是我当前的查询,它显示当前登录用户根据其注册的电子邮件所做的记录。例如,如果我在'标准'用户组中有5个用户并且他们都创建了每个记录,使用此查询他们每个人都可以查看他们自己的记录,我需要的是如果用户在'高级'用户组中,他们可以查看自己的记录以及“标准”用户组中用户创建的记录。这是在一个joomla网站上,不确定这是否有所不同,但所有访问级别都是由CMS定义的,我不能在查询中拥有实际用户组的名称,因为会有许多不同的,它需要根据登录用户的电子邮件地址/ ID查找用户组。

SELECT (CASE WHEN state = '1' THEN 'Accepted' WHEN state = '-2' THEN 'Waiting' WHEN state = '-1' THEN 'Archived' WHEN state = '0' THEN 'Rejected' ELSE 'Unknown' END) AS Status, s.names, s.phone, FROM_UNIXTIME(datetime1,'%d/%m/%y %T'), s.begin, s.PickupAddr1, s.end, s.PickupAddr4, s.message, s.selpassengers, s.selluggage, IF(s.returntrip=0, 'No', 'Yes'), IF(FROM_UNIXTIME(datetime2,'%Y') = '1970', NULL, FROM_UNIXTIME(datetime2, '%d/%m/%y %T')), tc.title AS Vehicle, s.cprice, pm.title As Payment, s.payment, s.selinfantseats, s.selchildseats, s.selboosterseats, s.selcarry, s.email, s.id, s.prepay, s.vehicletype FROM #__taxibooking_orders s
INNER JOIN #__taxibooking_cars tc ON tc.id = s.vehicletype
INNER JOIN #__taxibooking_paymentmethods pm ON pm.id = s.payment
WHERE s.email = {$UserEmail}

我需要修改它,以便显示的记录是特定用户组中的任何人创建的记录。

创建记录的人员的参考是'taxibooking_orders'表的'email'字段 用户组在“usergroups”表中定义 用户在“用户”表中定义,该表还具有“电子邮件”字段

提前感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我还不知道Joomla 3.2(但是),但是Joomla 2.5有一个表#__user_usergroup_map,它将用户ID映射到用户组ID。因此,您必须像这样修改WHERE部分:

WHERE s.email={$UserEmail} AND s.id IN (SELECT user_id FROM #__user_usergroup_map WHERE group_id=<yourgroupid>);

=&GT;这是为了获取用户在用户组中的记录。如果您想为任何用户执行此操作,请跳过s.email = {$ UserEmail}部分。

虽然我同意Elin在两种情况下都使用id而不是电子邮件地址。