如何才能使这些if语句正常工作

时间:2011-05-23 01:27:01

标签: php mysql if-statement nested

我正在尝试从数据库中获取数据并用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;
      } 
   }
}

在这里,我从数据库中获取所有内容(从投资组合中选择*),但在我的投资组合,网站,演示和图形;所以我想从上面的代码中只得到category =“web”的数据,所以我尝试了这个:

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,我怎样才能使这个工作

感谢您的帮助

5 个答案:

答案 0 :(得分:2)

我根据您的问题无法看到您的SQL,但您可以修改SELECT查询以包含WHERE category="web"

这样,您只需选择需要的行,而不是遍历该表中的每个行。

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

答案 1 :(得分:2)

您只需要==代替=吗?

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

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

答案 2 :(得分:1)

1)你错过了一个等号:

if($row->category = "web") =&gt; if($row->category == "web")

或者更好

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

2)如果您只想获取具有特定category字段的字段,则只需更改查询即可:

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

答案 3 :(得分:0)

好的,它应该是这样的,假设字段按如下方式排序

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,你可以在一行中使用它,如下所示:

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 -->';
}

答案 4 :(得分:0)

1)将您的查询更改为包含WHERE category =“web”子句

2)当你需要一个相等运算符(==)

时,你的if子句(=)中有一个赋值运算符