【问题标题】:Filtering using php if statement使用 php if 语句过滤
【发布时间】:2012-02-25 15:04:12
【问题描述】:

快速问题除了过滤器方面,我还有一个功能齐全的数据库网站。我有一个 javascript 过滤器,但由于它通过 li 类过滤并使其成为 li class=' ,因此它无法正确使用数据库。姓名 。 ' 没有用。

无论如何我都尝试使用这种方法来解决过滤器问题。

但是我不知道在哪里运行不会产生错误的查询,因此它被注释掉了。任何人都可以帮助甚至提出更好的解决方法吗?

$result = mysql_query("SELECT * FROM ddcompanies");

/*
while($row = mysql_fetch_array($result)) {
    $cname = $row["company"]; //runs through the company column and populates the array varcompany with those names
    $csect = $row["sector"]; //runs through the website column and populates the array varwebsite with those names
    $cslog = $row["slogan"]; //runs through the story column and populates the array varstory with the text
*/

echo "<ul id='portfolio'>";

if($_GET['link']=='design'){

    echo "design";// TEST
    $result .= "AND sector = 'design'";

echo "<li>
    <a href='single.php?link=" . $cname . "'><img src='images/companies/" . $cname . ".png' alt='' height='115' width='200' />$cname</a>
    <div id='sector'>$csect</div>
    <div id='details'>$cslog</div>
</li>";

}else{
    echo "no way";// TEST
};

希望你能帮助我,甚至请告诉我一个更好的方法。

提前致谢!

*编辑**

在我的索引页面上,我有一个网格或链接库(其中有一个图像和一些信息都从数据库中提取)。

每个数据库条目都有一个称为扇区的字段。

我希望能够只显示(过滤)属于例如的网格项目。数字(部门名称)或非数字(部门名称)。

因此过滤器将使用每个数据库条目中的扇区字段值。

目前我在索引页面上用于过滤的链接如下所示,例如设计或开发

我希望这已经足够清楚了。

*编辑**

//QUERY IN EACH

$query = "SELECT * FROM ddcompanies ";
if($_GET['link']=='design') {
    $query .= "WHERE sector = 'design'";
$result = mysql_query($query);
}elseif($_GET['link']=='development') {  
    $query .= "WHERE sector = 'development'";
$result = mysql_query($query);
};

//OR

$query = "SELECT * FROM ddcompanies ";
if($_GET['link']=='design') {
    $query .= "WHERE sector = 'design'";
}elseif($_GET['link']=='development') {  
    $query .= "WHERE sector = 'development'";
};
$result = mysql_query($query);

【问题讨论】:

  • 你想做什么?你的问题不清楚。
  • 我很困惑,你想做什么?
  • 抱歉,一定是解释得不好。

标签: php mysql if-statement while-loop


【解决方案1】:

在您上面发布的情况下,您似乎正在尝试根据 URL 参数(链接)附加到查询字符串。你这样做的方式不起作用,因为 $result 是一个资源,而不是一个字符串,所以你不能只是将另一个字符串附加到资源中。

您必须为您的查询创建一个字符串变量,然后将其插入到您的 mysql_query() 函数中。

您还必须将逻辑上移到检查如何修改查询的字符串声明之上。

最后,您需要在其中放置一个 WHERE 子句,因为仅使用 AND sector = 'design' 会破坏现在的查询。

编辑(添加一些伪代码):

$query = "SELECT * FROM ddcompanies ";
if(isset($_GET['link']))    
        $query .= "WHERE sector = '".mysql_real_escape_string($_GET['link'])."'";
    $result = mysql_query($query);

【讨论】:

  • 非常感谢,这是一个很好的帮助伙伴,正是我所追求的。如果我要添加更多,例如我会每次运行查询还是最后只运行一次?在上面编辑我的原件。 ^^^
  • 取决于几件事。即,如果您从数据库中搜索的字段相同或不同。您只需要相应地构建您的查询。如果它是相同的字段,您可以使用 IN() ,或者您可以使用 OR 并分别添加每个值。如果它是不同的字段,则需要使用 AND 并附加字段名/值组合。重要的是在将查询泵入 mysql_query() 函数之前先构建查询。
  • 啊,这就是我对查询和while的定位不了解的地方。太感谢了。我的数据库中的所有扇区都与查询中的相同。我不明白你所说的 in() 是什么意思。我上面的第二个示例是否可以使用底部的查询,或者该代码有什么问题吗?
  • 啊,对不起,好吧 :) 请忽略之前的评论
  • 你是个传奇。尝试过并添加了格式和所有内容,并且效果很好。非常感谢队友真的很感激。正在做我的头:)需要学习如何正确编码:)
猜你喜欢
  • 2021-01-06
  • 2013-12-25
  • 2017-04-23
  • 2017-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
相关资源
最近更新 更多