mySQL可见性问题

问题描述:

所以我想微调搜索。 我有一个表,其中包含信息,请求,与各自的网络。 我有另一个表,它记录可见性和它的网络,以及谁可以查看它,基于它是“公共”还是“私人”。mySQL可见性问题

我想要的最终结果是,那些在桌子上的人可以查看私人网络,而任何人都可以查看公共网络。

if ($whichnetwork == "Global"){ 
    $query = mysql_query("SELECT * FROM requests ORDER BY dateposted DESC"); 
} else { 
    $query = mysql_query("SELECT * FROM requests WHERE network = '$whichnetwork' ORDER BY dateposted DESC"); 
} 

while ($row = mysql_fetch_assoc($query)){ 

      echo "<div id='".$row["id"]."' class='item'>"; 
      echo '<div style="width: 75%;">'; 
      echo "<h4 style='display: inline;'>".$row["user"]." requests:</h4><br/>"; 
      echo "<h2 style='display: inline;'>".$row["title"]." </h2>"; 
      echo '</div>'; 

      echo '<h3 id="button" style="border-radius: 10px; padding: 4px; color: white; float: right; position: relative; top: -50px; border: 2px solid grey; background-color: #C0504D;">Apply</h2>'; 
      echo "</div>"; 
} 

在我的代码,我只需要请求表的引用,但是,有是有,网络,用户名和能见度另一个表。

我该如何做这项工作?克里斯,我已经失败了很多次,谢谢。

模式:

网络表:

network text utf8_general_ci  No         
username text utf8_general_ci  No         
visible text utf8_general_ci  No 

有关要求表:

network text utf8_general_ci  No 
user text utf8_general_ci  No 
+3

...为什么你向我们展示PHP代码而不是MySQL模式? – 2012-03-05 02:26:33

+0

好的,现在检查它。 – CCates 2012-03-05 02:35:56

+0

难怪你有麻烦。 'TEXT'不是一种通常用于查找事物的类型。 – 2012-03-05 02:45:09

您应该添加索引字段到您的表开始,将在您的加盟表帮助并查询。

改变网络表如下

user_id   int auto_increment primary key, 
username  nvarchar(30) , 
network   text, 
visibility_id int 

改变您的申请表

user_id   int , 
network   text 

添加另一个表知名度

visibility_id int // values stored and meaning(0-Public, 1-Private) 
visibility  nvarachar(10) (public, private etc) 

查询检查当前用户访问搜索网络和网络是公共的还是私人的

select user_id, visibility from network where network='UserProvided'; 

那么如果visibility_id是1这是私人支票,如果用户id得到了网络是一样的当前用户,然后只显示网络

其他

如果visibility_id是0,那么它是公开的,你可以显示来自请求。

+0

嗯,你能详细说明我需要使用哪种查询吗? – CCates 2012-03-05 22:20:59

+0

我有一个问题,网络是私人的还是公共的,还是特定的用户超级用户,以便他可以查看所有网络? – 2012-03-06 04:14:35

+0

如果条件有效,则基于上面的可见性标识。 – 2012-03-06 04:15:45