为了账号安全,请及时绑定邮箱和手机立即绑定

PHP/MySQL - 需要帮助获取用户的适用事件列表

PHP/MySQL - 需要帮助获取用户的适用事件列表

PHP
天涯尽头无女友 2022-01-24 09:39:58
我需要一些帮助 - 我有两张桌子:events (eventID, event_name, event_description) - 用于存储有关不同事件的信息events_applied (eventID, userID, date_applied) - 用于跟踪哪些用户应用了哪些事件当用户登录到应用程序时,他应该只看到可供他申请的事件,或者更准确地说,这将是他尚未申请的事件。应隐藏应用的事件。所有内容都应打印在带有应用程序链接的表格中。目前,我的代码如下所示:$sql = "SELECT * FROM events";if($stmt = $mysqli->prepare($sql)) {     $stmt->execute();     $stmt->store_result();     $num_of_rows = $stmt->num_rows;     $stmt->bind_result($eventID, $event_name, $event_description);    echo '<table>             <thead>             <tr>             <th>Event #</th>             <th>Event name</th>             <th>Event description</th>             <th>Apply</th>             </tr>             </thead>             <tbody>';     while ($stmt->fetch()) {         echo '<tr>         <td>'.$eventID.'</td>         <td>'.$event_name.'</td>         <td>'.$event_description).'</td>         <td><a href="event_apply.php?eventID='.$eventID.'&userID='.$userID.'">Apply</a></td>        </tr>';     } }问题是这将打印出所有事件,但我需要删除每个用户的“已经应用到”事件,或者(更好) - 打印出应用的事件而不是打印“应用链接”,我会打印出“对不起,你已经申请了这个活动。我怎样才能做到这一点?我在想,也许在 while 循环中我可以这样做,$sql = "SELECT DISTINCT eventID FROM events_applied WHERE userID = ?";但看起来有点乱:/编辑/新信息 我已经用“max_people”参数扩展了“事件”表 - 所以我可以限制注册每个事件的人数。我将如何修改代码以不显示已满的事件?这是目前有效的答案:SELECT e.*FROM events eLEFT JOIN events_applied ea    ON ea.eventID = eID.eventID AND ea.userID = :userIDWHERE ea.eventID IS NULL我尝试添加另一个这样的 WHERE: AND (SELECT COUNT (userID) FROM events_applied WHERE eventID = :eventID问题是我不知道如何将 eventID 作为变量获取 - 我正在使用 while 循环打印出所有事件,但在此之前我需要这个变量,对吗?
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

这看起来像是反模式的一个很好的用例LEFT JOIN:


SELECT e.*

FROM events e

LEFT JOIN events_applied ea

    ON ea.eventID = euserID.eventID AND ea.userID = :userID

WHERE ea.eventID IS NULL

:userID当前连接用户的 id 在哪里。


此查询选择所有事件并执行 aLEFT JOIN以连接到当前用户申请的事件。然后,该WHERE子句消除匹配的事件。结果,您确实获得了当前用户尚未申请的所有事件。


查看完整回答
反对 回复 2022-01-24
  • 1 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号