2011-05-23 49 views
0

我想从数据库中获取我的数据并用html标记包装它。这里是迄今为止工作代码:我怎么能得到这些如果语句工作

function homethumb(){ $this->count; $i = 0; 
    while($row = mysqli_fetch_object($this->result)) 
    { 
     $this->count++; $i++; 
     if($i == 1){echo '<div class="gal1">';} 
     echo '<a href="portfolio.php?id=' . $row->id . '"> <div class="gal"><img src="img/' . $row->thumb2 . '.jpg"></div></a>'; 
     if($i == 2){ 
     echo '</div> <!-- gal1 -->'; 
     $i=0; 
     } 
    } 
} 

在这里我从数据库中(从投资组合选择*)得到一切,但在投资组合中我有,网站,演示和图形;所以我想只得到类别为“网”从上面的代码,所以我想这个数据:

function homethumb(){ $this->count; $i = 0; 
    while($row = mysqli_fetch_object($this->result)) 
    { 
     if($row->category = "web"){ 
       $this->count++; $i++; 
     if($i == 1){echo '<div class="gal1">';} 
     echo '<a href="portfolio.php?id=' . $row->id . '"> <div class="gal"><img src="img/' . $row->thumb2 . '.jpg"></div></a>'; 
     if($i == 2){ 
     echo '</div> <!-- gal1 -->'; 
     $i=0; 
     } 
     } 
    } 
} 

现在嵌套if语句不生成我需要的div,我怎么能得到这个工作

感谢您的帮助

+0

输入时是否过滤了你的'thumb2'以防止[跨站脚本缺陷](http://en.wikipedia.org/wiki/Cross-site_scripting)? – sarnold 2011-05-23 01:35:39

+0

@sarnold不会,我该怎么做 – aurel 2011-05-23 02:35:55

回答

2

我不能看到基于你的问题你的SQL,但你可以只修改你的SELECT查询到包括WHERE category="web"

这样,你只选择你行需要,而不是在该表格中每行循环播放

此外,您的if声明似乎正在使用赋值=而不是比较==

+0

'='是一个错字错误,而where过滤器是我真的不想在这种情况下做的事情,因为它会与其他查询冲突 – aurel 2011-05-23 01:47:39

+0

因此修复错字纠正你的问题?或者在修改代码后,你还没有得到你想要的结果吗? – 2011-05-23 01:58:52

+0

我修正了错字,并将代码更改为“where category =” – aurel 2011-05-23 03:13:10

2

你只需要有==而不是=

if($row->category == "web"){ 

但是,最好将查询限制在数据库级别所需的结果中,除非由于某种原因需要其他行。

1

1)你错过了等号:

if($row->category = "web") =>if($row->category == "web")

或者更好的

if($row->category === "web")

2)如果你想只得到领域与特定category场,您可以简单地更改您的查询:

[rest of your query] WHERE category="web"

+0

我添加了他们,上面是一个错字错误,但我仍然遇到同样的问题,并且我对所有内容使用了一个Select查询,会满足这个问题,它会制动其他人 – aurel 2011-05-23 01:36:18

0

OK的话,应该是这样,假设字段进行排序如下

ID,类别,网站的Thumb2,演示,图形

function homethumb(){ $this->count; $i = 0; 
    while($row = mysqli_fetch_object($this->result)) 
    { 
     if($row[1] == "web"){ 
       $this->count++; $i++; 
     if($i == 1){echo '<div class="gal1">';} 
     echo '<a href="portfolio.php?id=' . $row[0] . '"> <div class="gal"><img src="img/' . $row[3] . '.jpg"></div></a>'; 
     if($i == 2){ 
     echo '</div> <!-- gal1 -->'; 
     $i=0; 
     } 
     } 
    } 
} 

而且不需要嵌套如果,你可以使用它在一个行,如下所示:

if($row[1] = "web") 
{ 
    echo '<div class="gal1">'; 
    echo '<a href="portfolio.php?id=' . $row[0] . '"> <div class="gal"><img src="img/' . $row[3] . '.jpg"></div></a>'; 
    echo '</div> <!-- gal1 -->'; 
} 
+0

我得到这个错误 - 不能使用stdClass类型的对象作为数组 – aurel 2011-05-23 01:45:14

0

1)更改您的查询包含一个类别为“网络”条款

2)当你需要一个相等运算符(==)时,你有一个赋值运算符(==)