mySQL可见性问题

时间:2012-03-05 02:24:00

标签: php 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>";
}

在我的代码中,我只有对requests表的引用,但是,还有另一个表具有Network,Username和Visibility。

我将如何使这项工作?我已多次执行它了,谢谢,Chris。

架构:

网络表:

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

1 个答案:

答案 0 :(得分:1)

您应该在表格中添加索引字段以启动,这有助于加入表格和查询。

如下更改网络表

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,则私有检查userId获取的网络是否与当前用户相同,然后仅显示该网络

否则

如果能见度为0,那么它是公开的,您可以从请求中显示该内容。