Php 在'之后断开UL标签;n';while循环中的时间
我目前正在为我工作的公司开发模块车间,有一个小问题。在从表中提取记录时,我希望每三个数据记录关闭HTML“UL”标记 这就是我目前拥有的: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
<?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; }
}