-6ren">
gpt4 book ai didi

php - 在 while 循环中 'n' 次后打破 UL 标签

转载 作者:可可西里 更新时间:2023-11-01 00:32:14 25 4
gpt4 key购买 nike

我目前正在为我工​​作的公司开发模块商店,但遇到了一个小问题。从表中提取记录时,我希望每三个数据记录关闭 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>

图片: enter image description here

干杯。

最佳答案

首先,我提供了可以根据您的需要进行调整的简单 PHP 脚本。在此脚本中,开始和结束标记得到正确处理。

我还添加了 $break_after变量 - 你可以在这里设置任何你想要的正值 - 在你的例子中它是 3 因为你想在每个第 3 个元素之后执行操作。

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

<?php
$data = array(1,2,3,4,5);

$break_after = 3;

$counter = 0;
$totalNumber = count($data);
foreach ($data as $item) {
if ($counter % $break_after == 0) {
echo '<ul>';
}
echo '<li>'.$item.'</li>';

if ($counter % $break_after == ($break_after-1) || $counter == $totalNumber-1) {
echo '</ul>';
}
++$counter;

}

第二种方法(假设您无法在循环之前获取数据元素的数量)

<?php
$data = array(1,2,3,4,5);

$break_after = 3;

$counter = 0;
foreach ($data as $item) {
if ($counter % $break_after == 0) {
echo '<ul>';
}
echo '<li>'.$item.'</li>';

if ($counter % $break_after == ($break_after-1)) {
echo '</ul>';
}
++$counter;

}

if ((($counter-1) % $break_after) != ($break_after-1)) {
echo '</ul>';

}

关于你的问题,你还需要记得开始你的<ul>每个第 3 条记录(不仅仅是关闭它)而且还要确保在循环后关闭它。在您的情况下,您可以使用第二种方法,因为您不知道元素的数量(实际上您可以使用 mysqli_num_rows 函数获取它们,然后您也可以使用方法 1)。对于您的情况,您的代码可能应该如下所示:

<?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
$counter = 0;

$break_after = 3;

while ($row = mysqli_fetch_array($result)) {
if ($counter % $break_after == 0) {
?>
<ul class="products-grid clearfix" style="margin-right: 5px; margin-left: 20px;">
<?php } ?>
<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
if ($counter % $break_after == ($break_after - 1)) {
echo '</ul>';
}
++$counter;

}

if (($counter-1) % $break_after != ($break_after - 1)) { // make sure there will be closing </ul>
echo '</ul>';

}
?>
</div>

关于php - 在 while 循环中 'n' 次后打破 UL 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24774872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com