所以,我真的很困惑。我不知道我在做什么,但是,我正在尝试限制基于网络的搜索是私有(private)的还是公共(public)的。
此代码不起作用,但是,我正在尝试弄清楚如何使它起作用。如何让私有(private)网络只对该网络中的人显示?????????????
$query = mysql_query("SELECT * FROM requests ORDER BY dateposted DESC");
while ($row = mysql_fetch_assoc($query)){
$network = mysql_query("SELECT * FROM network");
while ($row2 = mysql_fetch_assoc($network)) {
$display = false;
$pos = strpos($row['network'], $search);
if ($row2['visible'] == "public" and $search == "Global") {
$display = true;
} else
if ($pos == true and
($row2['visible'] == "public" or $row2['username'] == $username)) {
$display = true;
} else
if ($row2['visible'] == "private") {
$display = false;
}
}
echo $display;
if ($display == true){
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
请求模式:
id int(11) No auto_increment
user text utf8_general_ci No
title text utf8_general_ci No
description text utf8_general_ci No
picture text utf8_general_ci No
price text utf8_general_ci No
premium datetime No
type text utf8_general_ci No
network text utf8_general_ci No
dateposted datetime No
最佳答案
这里有点晚了,所以我会尽量把这个答案写得更好。
您需要打印所有公共(public)网络,并且只打印与用户相关的私有(private)网络。另外,如果我理解的话,您的搜索可以是“全局”或具有网络的部分名称,对吗?
所以你的查询可以是这样的:
if( $search == "Global" ) {
$sql = "select n.*
, r.*
from network n
inner join request r on n.network = r.network
where n.network = 'public'
or (n.network = 'private'
and n.username = '".$username."')";
} else {
$sql = "select n.*
, r.*
from network n
inner join request r on n.network = r.network
where n.network = 'public'
or (n.network = 'private'
and n.username = '".$username."')
and n.network like '%".mysql_real_escape_string($search)."%'";
}
这里的like
意思是“选择我所有网络名称包含搜索内容的数据。更多示例和解释可以在here和mysql docs中查看。
关于php - 第二次尝试限制 mySQL 和 PHP 中的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9577091/