2012-02-02 27 views
-1

快速问题除了过滤器方面,我有一个功能齐全的数据库网站。我有一个JavaScript过滤器,但它不能正常工作,因为它通过li类过滤并使其成为li class ='。名称 。 ' 不工作。使用php过滤if语句

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

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

$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); 
+1

你到底想干什么?你的问题不清楚。 – 2012-02-02 22:49:04

+0

我很困惑,你想做什么? – 2012-02-02 22:49:40

+0

你正在尝试做什么? – Joe 2012-02-02 22:51:43

回答

2

它看起来像你想追加到基于你上面贴的情况下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); 
+0

非常感谢,这是一个伟大的帮助队友,正是我之后的事情。如果我要添加更多我会每次运行查询还是只运行一次?编辑我的原创上面。 ^^^ – Nils 2012-02-02 23:04:47

+1

取决于一些事情。也就是说,如果从数据库中搜索的领域相同或不同。您只需要相应地构建您的查询。如果它是相同的字段,则可以使用IN(),或者可以使用OR并分别添加每个值。如果它是不同的字段,则需要使用AND并附加字段名称/值组合。重要的是,在将其抽入mysql_query()函数之前,首先构建查询。 – 2012-02-02 23:09:35

+1

好的,我看到你的编辑...我会编辑我的回复 – 2012-02-02 23:13:16