Php 仅向添加到表中的用户显示数据
首先,用户在其帐户中创建事件(学院事件),比如说Php 仅向添加到表中的用户显示数据,php,mysql,Php,Mysql,首先,用户在其帐户中创建事件(学院事件),比如说TechTo,他只能使用下面的查询访问创建的事件 $sql_created=mysqli_query ($dbconfig,"SELECT * FROM events WHERE userID='".$_SESSION['userid']."'") or die( mysqli_error($dbconfig)); 现在我要做的是,我有另一个表名event\u coordinators,其中创建事件TechTo的用户希望在event\u co
TechTo
,他只能使用下面的查询访问创建的事件
$sql_created=mysqli_query ($dbconfig,"SELECT * FROM events
WHERE userID='".$_SESSION['userid']."'") or die( mysqli_error($dbconfig));
现在我要做的是,我有另一个表名event\u coordinators
,其中创建事件TechTo
的用户希望在event\u coordinators
表中添加协调员,然后在event\u coordinators
表中添加的用户还可以控制TechTo
创建的事件,并可以编辑关于事件的删除
这是添加了协调人的事件协调人表
coID addBy addedUserID eventID
1 1 3 2
2 1 11 3
3 1 11 2
这是用户创建事件的events
表
此处events.userID=event\u coordinators.addBy
eventID userID eventName
2 1 Mind Sparx
3 1 Tech Vision
对于上述情况,我如何实现select语句或其他方法听起来您需要以下内容:
select distinct events.*
from events
left join event_coordinators ec on ec.eventName = events.name
where events.userID = {$_SESSION['userid']}
or ec.addedUserID = {$_SESSION['userid']}
请注意,在events表上添加一个索引并将其存储在event_coordinators中会更简单,而不是在字符串event name上加入索引,特别是在事件名称可能不唯一的情况下。根据我所读的内容,您正在将“event A”作为user 1添加到数据库中。
用户1拥有编辑/删除事件A的所有权限。
是否要将用户2添加到事件协调员,以便他们也可以编辑和删除事件A
那么,,
我会做类似的事情
$uid=$_SESSION['userid'];
$sql=mysqli_query($dbconfig, "SELECT eventName FROM event_coordinators WHERE addedUserID='{$uid}'");
if(mysqli_num_rows($sql)) {
echo "You are a co-ordinator of the following events:";
while($r=mysqli_fetch_array($sql)) {
echo "<a href='event.php?event=".$r['eventName']."'>".$r['eventName']."</a><br />";
}
}
是的,我有events表的eventID,但为了理解,我将其重命名为stringRight,但标准方法是将事件ID存储在event_coordinators表中,然后以上面的查询为例,您可以从events.name
获取人类可读的文本。数据库应该只需要在一个地方存储人类可读的版本。这是所有事件列表的工作人员。你的意思是说它们与select语句无关?你能详细说明一下吗?这是一个select语句是的,我想这是我需要在主页上使用的,而不是在事件列表页面上。谢谢。第一个代码示例将显示一个事件列表,添加的用户协调员可以访问该列表,第二个代码示例将用于特定事件的编辑页面或查看页面,除非您设计了系统,以便将事件的创建者自动添加到event\u coordinators
表中,否则您可能希望第二个查询包含用户作为协调者的事件(它确实是这样做的)以及用户创建的事件(它没有创建)。不清楚“这种查询”是什么意思。向事件协调器插入行的语句
?“可以编辑或删除关于事件”的语句?或者你的意思是选择声明?关于事件
表的唯一信息是它包含一个名为userid
的列。由于没有事件的定义
表,没有示例数据,也没有所需结果集的示例,我们只是猜测您试图实现的目标。是的,很抱歉没有提供关于该问题的信息,但我编辑了上述问题,以便更好地理解它,而且我对堆栈溢出还不熟悉
$uid=$_SESSION['userid'];
$event_name=$_GET['event'];
$sql=mysqli_query($dbconfig, "SELECT eventName FROM event_coordinators WHERE addedUserId='{$uid}' AND eventName='{$event_name}'");
if(mysqli_num_rows($sql)) {
//User has access to this event
} else {
//User couldn't be found, therefore no access to this event.
}