Php 在'之后断开UL标签;n';while循环中的时间

Php 在'之后断开UL标签;n';while循环中的时间,php,Php,我目前正在为我工作的公司开发模块车间,有一个小问题。在从表中提取记录时,我希望每三个数据记录关闭HTML“UL”标记 这就是我目前拥有的: <?php $selektKat = "SELECT * FROM `proizvodi` WHERE `kategorija` = '$kat'"; //don't worry about SQLi; I will fix it $result = mysqli_query($con, $selektKat) or die(mysqli_er

我目前正在为我工作的公司开发模块车间,有一个小问题。在从表中提取记录时,我希望每三个数据记录关闭HTML“UL”标记

这就是我目前拥有的:

<?php
  $selektKat = "SELECT * FROM `proizvodi` WHERE `kategorija` = '$kat'"; //don't worry about SQLi; I will fix it
  $result = mysqli_query($con, $selektKat) or die(mysqli_error());

// Line where the loop starts
<?php
while ($row = mysqli_fetch_array($result)) { ?>

  <ul class="products-grid clearfix" style="margin-right: 5px; margin-left: 20px;">
  <li class="item" style="min-height: 339px">
    <a id="product-image-42321" href="proizvod.php" title="naziv" class="product-image">
      <img src="http://static.511tactical.com/mag/media/catalog/product/cache/1/small_image/220x/9df78eab33525d08d6e5fb8d27136e95/5/3/53212_716_Alternate1.jpg" width="220" alt="<?php echo $row['naziv'] ?>" />
    </a>
      <ul class="swatches clearfix">
      <li id="swatch-228" class="swatch product-42321">
        <a href="proizvod.php" title="<?php echo $row['naziv']; ?>">
        <img src="<?php echo __DIR__ . '/images/' . $row['slika'] . '.jpg'; ?>" />
        </a>
      </li>
      </ul>

      <div class="price-box">
        <span class="label" id="configurable-price-from-42321">
          <span class="configurable-price-from-label">
          </span>
        </span>


      <div class="product-name"><a id="product-name-140981" href="proizvod.php"><?php echo $row['naziv']; ?></a></div>

      <span class="regular-price" id="product-price-42321">
        <span class="price"><?php echo $row['cijena']; ?><sup>KM</sup>
        </span>
      </span>
      </div>

      <div class="actions">
      </div>

  </li>

<?php
}
?>
</ul> // This has to be closed in loop after every 3 records
</div>

首先,我提供了简单的PHP脚本,可以根据您的需要添加。在这个脚本中,open和end标记被正确处理

我还在变量后面添加了
$break_
变量-您可以在这里设置任何您想要的正值-在您的情况下,它是3,因为您想要在每个第三个元素之后执行操作

第一种方法(它假设您可以在循环之前获得数据元素的数量)

$i=0;
而($row=mysqli_fetch_数组($result)){
//你的代码
如果($i%5==0){//Break在此处标记}
//代码的其余部分
$i++;
}//在循环结束时结束
%
是,它在除法后返回余数,所以

5%5=0

9%5=4

添加一个
varaible
,比如说
$i
,同时在每次迭代中递增。 当它是3的倍数时,只需关闭你的
ul

while ($row = mysqli_fetch_array($result)) {

    // YOUR CODE HERE

    $count++;
    if ($count % 3 == 0) echo '</ul>';
}
while($row=mysqli\u fetch\u数组($result)){
//你的代码在这里
$count++;
如果($count%3==0)回显“”;
}
对于记录,
%
运算符将为您提供剩余的欧几里德除法。


<?php
//Our images
$array = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14);
//Count array for last ul
$count_array = count($array);
//Counter
$count       = 0;
foreach ($array as $key => $value) {
    $count++;
    //Begin
    if ($count % 3 == 1) {
        echo '<ul>';
    }
    //Output data
    echo '<li>' . $value . '</li>';
    //Close ul
    if ($count % 3 == 0 || $count_array == $count) {
        echo '</ul>';
    }
}
?>
输出:

<ul><li>1</li><li>2</li><li>3</li></ul><ul><li>4</li><li>5</li><li>6</li></ul><ul><li>7</li><li>8</li><li>9</li></ul><ul><li>10</li><li>11</li><li>12</li></ul><ul><li>13</li><li>14</li></ul>
  • 1
  • 2
  • 3
    • 4
    • 5
    • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

    • 1
    • 2
    • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    • 10
    • 11
    • 12
        • <14
          • 首先,只需将项目放在div中而不是列表项目中(完全省略
            ):

            现在,项目被很好地放置在一个网格中,容器有多宽根本不重要

            小提琴提示:
            overflow:hidden
            是一种显示边框的clearfix。没有它也可以工作

            现在,如果您想在较小的设备上添加断点以显示2列网格而不是3列网格,只需更改项目的宽度和伪选择器的计数器。我也在媒体查询中放置了3网格计数器,因此您不必覆盖该计数器

            3对2柱网格示例()

            不要忘记调整示例面板的大小以查看响应结果;)


            给你!完全响应的3到2列网格:)只需根据需要更改断点,以及宽度和边距大小(只需确保在3列版本中,
            3*columnWidth+2*marginWidth
            合计为100%,对于2列版本,
            2*columnWidth+marginWidth

            if($count%3==0){//close ul
            如果有人对我的问题给出-1的合理解释,我将非常感兴趣。按照所有标准,这些问题都是正确的。提前谢谢@尤拉兄弟,我没有想到,聪明的方式。顺便说一句,你应该回答这个问题。看我的答案真的很容易。这实际上是唯一正确的答案,由于它负责打开
            标签,并负责最后一次关闭
            ,以防数据量不能被3整除,因此这是一个非常常见的问题,我建议您尽可能保持答案清晰,以备将来参考。海报的示例代码虽然正确,但并不清晰。由于实现非常简单,只有一个简单的示例,删除这个示例是否是一个好主意?我只是想…@giorgio不要太迂腐,但我的回答也是如此。@BartFriederichs:)因为当数据中的项目数可以被三整除时,最终会得到一个空的
                。这是不可取的行为。@giorgio你是对的。我删除了我的答案。无论如何,我自己也不会这样做;-))。您好@giorgio,您的答案很好,但取决于添加的响应需求。我试图实现你的逻辑代码,它解决了问题,尽管我的样式表已经响应了。投票选出一个好答案!:-)简单实用。坚持下去,我不知道是谁否决了你,但现在已经解决了。总是乐于助人;-)检查@Marcin的答案,要长得多,并且要很好地解释情况。谢谢你的回答。
                
                $i=0;
                while ($row = mysqli_fetch_array($result)) { 
                
                // Your code
                
                if($i % 5 == 0){ // Break </ul> tag here}
                
                // Rest of code
                
                
                $i++;
                } // End while loop
                
                while ($row = mysqli_fetch_array($result)) {
                
                    // YOUR CODE HERE
                
                    $count++;
                    if ($count % 3 == 0) echo '</ul>';
                }
                
                <?php
                //Our images
                $array = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14);
                //Count array for last ul
                $count_array = count($array);
                //Counter
                $count       = 0;
                foreach ($array as $key => $value) {
                    $count++;
                    //Begin
                    if ($count % 3 == 1) {
                        echo '<ul>';
                    }
                    //Output data
                    echo '<li>' . $value . '</li>';
                    //Close ul
                    if ($count % 3 == 0 || $count_array == $count) {
                        echo '</ul>';
                    }
                }
                ?>
                
                <ul><li>1</li><li>2</li><li>3</li></ul><ul><li>4</li><li>5</li><li>6</li></ul><ul><li>7</li><li>8</li><li>9</li></ul><ul><li>10</li><li>11</li><li>12</li></ul><ul><li>13</li><li>14</li></ul>
                
                <div class="product-grid">
                    <?php while ( $row = mysqli_fetch_array( $result ) ): ?>
                        <div class="item"> ... </div>
                    <?php endwhile; ?>
                </div>
                
                .product-grid { width: 100%; }
                .product-grid .item { float: left; width: 32%; margin-left: 2%; margin-bottom: 2%; }
                .product-grid .item:nth-of-type(3n+1) { margin-left: 0; }
                
                .product-grid { width: 100%; }
                .product-grid .item { float: left; width: 32%; margin-left: 2%; margin-bottom: 2%; }
                
                /* 3-column */
                @media (min-width: 501px) {
                    .product-grid .item:nth-of-type(3n+1) { margin-left: 0; }
                }
                
                /* 2-column. Don't forget to alter the item width accordingly */
                @media (max-width: 500px) {
                    .product-grid .item { width: 49%; }
                    .product-grid .item:nth-of-type(2n+1) { margin-left: 0; }
                }