【问题标题】:php while-loop- closing divphp while-loop-关闭div
【发布时间】:2011-10-31 20:36:26
【问题描述】:

我正在尝试制作某种分页系统。

每个页面最多有 4 个来自数据库的元素。

每个页面都被一个 div 包围(div id='p1' class='pagedemo _current')。所以我有以下内容:

$i=0;
$pag=0;
$arr = array();

while($rowNews = mysql_fetch_array($rsNews)){
    $i++;
    $arr[$i] = $rowNews;

    if($i%4==1){
       echo "div id='p1' class='pagedemo _current'"
     }

  ...show content...

    if($i%4 ==0 ){
       echo"</div>"; //close the tag of class="pagedemo"
    }

}//end of while

这会在 i 为 1 时打开一个 div; 5; 9.... 当是 4 (4; 8; 12...) 的倍数时关闭 但我也想在 $i 最后一个数字时关闭 div,即:如果只有 6 个结果,我想在第 6 个元素之后关闭 div。

我没有完成它

有什么想法吗??

【问题讨论】:

    标签: php while-loop


    【解决方案1】:

    只需在循环后检查 $i 并在 i%4 != 0 时关闭(表示尚未关闭)

    $i=0;
    $pag=0;
    $arr = array();
    
    while($rowNews = mysql_fetch_array($rsNews)){
        $i++;
        $arr[$i] = $rowNews;
    
        if($i%4==1){
           echo "div id='p1' class='pagedemo _current'"
         }
    
      ...show content...
    
        if($i%4 ==0 ){
           echo"</div>"; //close the tag of class="pagedemo"
        }
    
    }//end of while
    if ($i%4 !=0) {
    echo"</div>"; //close the tag of class="pagedemo"
    }
    

    【讨论】:

      【解决方案2】:

      您需要能够计算 mysql 结果中有多少行。然后将其与您的迭代器进行比较。

      $i=0;
      $pag=0;
      $arr = array();
      
      $total = mysql_num_rows($rsNews);
      while($rowNews = mysql_fetch_array($rsNews)){
          $i++;
          $arr[$i] = $rowNews;
      
          if($i%4==1){
             echo "div id='p1' class='pagedemo _current'"
           }
      
        ...show content...
      
          if($i%4 ==0 || $i == $total){
             echo"</div>"; //close the tag of class="pagedemo"
          }
      
      }//end of while
      

      【讨论】:

      • 关心$i == $total,那只是因为你在循环开始时做了一个$i++。如果您稍后使用 foreach 左右,它将是 $i == $total-1。顺便说一句,我建议您从一开始就大量删除 $i++,并更新您的代码以反映此更改。索引是从 0 而不是 1 开始计算的!如果您留下它,对其他人来说有点误导。
      • 啊,我同意。但在他的情况下,他希望他的行以 1 开头,而不是 0。如果我确实以 0 开头,那么我会将 $i%4==0 更改为 ($i+1)%4==0。
      • ace:实际上该评论是针对 user794035 的,但我应该建议他如何正确操作。我认为这样做的风格很糟糕。
      【解决方案3】:

      设置一个变量来检测是否需要关闭并在最后检查:

      while($rowNews = mysql_fetch_array($rsNews)){
          $i++;
          $arr[$i] = $rowNews;
      
          if($i%4==1){
             $close = true;
             echo "div id='p1' class='pagedemo _current'"
           }
      
        ...show content...
      
          if($i%4 ==0 ){
             $close = false;
             echo"</div>"; //close the tag of class="pagedemo"
          }
      
      }
      
      if($close)
      echo"</div>";
      

      【讨论】:

        【解决方案4】:

        稍后添加:

        if ($i%4 != 0) {
          echo"</div>";
        }
        

        编辑:应该像@evildead

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-08-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多