【问题标题】:Assigning a DIV in while loop在while循环中分配DIV
【发布时间】:2015-11-29 18:58:58
【问题描述】:

大家好,提前致谢。所以我有一个看起来像这样的while循环:

<?php
    $limit = 4;
    $countSql = "SELECT COUNT(book_id) FROM books";
    $tot_result = mysqli_query($conn, $countSql);
    $row = mysqli_fetch_row($tot_result);
    $total_records = $row[0];
    $total_pages = ceil($total_records / $limit);
    if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; };
    $start_from = ($page-1) * $limit;
    $sql = "SELECT * FROM books ORDER BY book_id DESC LIMIT $start_from, $limit";
    $rs_result = mysqli_query($conn, $sql);
    while ($row = mysqli_fetch_assoc($rs_result)) {
        $book_titlel=$row['book_titlel'];
        $book_titlel=sanitize($book_titlel);
        echo "<div class='grid_2 col-md_4'><div class='box_9'><div class='img-wrap'><a href='book/".$book_titlel."/".$row['book_id']."'><img alt='".$row['book_title']."' data-src='images/books/".$row['book_picture'].".jpg' src='images/preloader.gif'></a></div><div class='caption'><div class='rating-bar'><div class='rating' style='width: 50%'></div></div><h3 class='text_5 color_1'><a href='book/".$book_titlel."/".$row['book_id']."'>".$row['book_title']."</a></h3><p class='text_6 color_3'><a href='book/".$book_titlel."/".$row['book_id']."'>".$row['book_author']."</a></p></div></div></div>";
    };
?>

所以我想做的是每 4 个结果分配一个 DIV;例如: 结果从 1 到 4 被包裹在 &lt;div class='row'&gt;&lt;/div&gt; 中,从 5 到 8 在新的 &lt;div class='row'&gt;&lt;/div&gt; 中,从 9 到 12 也如此等等。有可能吗?

【问题讨论】:

标签: php sql


【解决方案1】:

在你的循环前面,我把打开的 div 放在你的包装器中,然后在每 4 次进入循环中它会关闭 div 并打开一个新的

<?php 
$limit = 4;
$countSql = "SELECT COUNT(book_id) FROM books";
$tot_result = mysqli_query($conn, $countSql);
$row = mysqli_fetch_row($tot_result);
$total_records = $row[0];
$total_pages = ceil($total_records / $limit);
if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; };
    $start_from = ($page-1) * $limit;
    $sql = "SELECT * FROM books ORDER BY book_id DESC LIMIT $start_from, $limit";
    $rs_result = mysqli_query($conn, $sql);
    $i = 0;
    echo '<div id="yourwrapper">';
    while ($row = mysqli_fetch_assoc($rs_result)) {
        if($i %4 == 0){echo '</div><div id="yourwrapper">';}
        $book_titlel=$row['book_titlel'];
        $book_titlel=sanitize($book_titlel);
        echo "<div class='grid_2 col-md_4'><div class='box_9'><div class='img-wrap'><a href='book/".$book_titlel."/".$row['book_id']."'><img alt='".$row['book_title']."' data-src='images/books/".$row['book_picture'].".jpg' src='images/preloader.gif'></a></div><div class='caption'><div class='rating-bar'><div class='rating' style='width: 50%'></div></div><h3 class='text_5 color_1'><a href='book/".$book_titlel."/".$row['book_id']."'>".$row['book_title']."</a></h3><p class='text_6 color_3'><a href='book/".$book_titlel."/".$row['book_id']."'>".$row['book_author']."</a></p></div></div></div>";
        $i++;
    };
echo '</div>';

?>

【讨论】:

  • $opened 代表什么?我认为它没有定义
  • 我想我删除了它?这只是我在回答您的代码时的一个想法,我进行了编辑以将其删除。 @TsvetilinBoynovski
  • @TsvetilinBoynovski 我再次编辑了代码并将 $i++ 放在循环中较低的位置,因为在最初的情况下,第一次运行可能只会在 div 中执行 3 个元素,现在它应该可以工作了。是吗?
  • 首先感谢,非常感谢!现在,当我尝试它时,我发现 div 肯定有问题,因为它破坏了 UI。我试图理解 if 部分,对我来说似乎很复杂。您在所有这些之前打开 div class=row,它在哪里关闭?循环如何在一个新的 div class=row 中显示每 4 个结果,我无法理解。我认为某些 div 不能关闭...
  • 不应该是 if($i %4 == 0) 而不是 if($i %4 != 0)
【解决方案2】:

你可以试试这个:

<?php

...

$temp_count = 0;

echo "<div class='row'>";

while($row = mysqli_fetch_assoc($rs_result)){

    if($temp_count  == 4){
        echo "</div><div class='row'>";
        $a = 0;
    }

    echo {YOUR_DATA};
    $temp_count++;


}

echo "</div>";

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-23
    • 2013-04-07
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    相关资源
    最近更新 更多