Как повторить каждую после 9-й итерации цикла? Первое эхо только насчитало 8 пунктов

Мой код ниже:

function portfolio_gallery() {
    global $conn;   
    $query = $conn->query("SELECT codename, namegroup, features, title, showimage FROM portfolio ORDER BY id DESC");

    if ($query->num_rows > 0) {
        // output data of each row
        echo '<div>';
        $i = 0; 
        while($row = $query->fetch_assoc()) {
            $i++;
            if ($row["showimage"]) {

               if($i % 9 == 0){
                     echo '</div><div>';
            }

              echo '<a class="imgpop" href="images/portfolio/large/'.$row["codename"].'.jpg" rel="'.$row["namegroup"].'" title="'.$row["title"].' - '.$row["features"].'"><img src="images/portfolio/thumb/'.$row["codename"].'.jpg" alt="'.$row["title"].'" width="348"/><span class="imgpop-caption">'.$row["title"].'</span></a>';
              }

        }
        echo '</div>';
    }
}

portfolio_gallery();

Я хотел повторить </div><div> для каждого после 9-го элемента цикла, но каждый раз, когда я выполнял код, первое эхо происходило только после 8 элементов вместо 9, а остальное было каждый 9-й.

5 ответов

Решение

Я смог решить это, изменив условие:

Так что вместо: if($i % 9 == 0) {...}

Я использовал: if($i!=0 && $i % 9 == 0) {...}

А также размещение $i++ в конце цикла while.

Вы должны увеличить

$i

после

if($i % 9 == 0)

Пожалуйста, попробуйте это:)

<?php 
 function portfolio_gallery() {
    global $conn;   
    $query = $conn->query("SELECT codename, namegroup, features, title, showimage FROM portfolio ORDER BY id DESC");

if ($query->num_rows > 0) {
    // output data of each row
    echo '<div>';
    $i = 0;
    while($row = $query->fetch_assoc()) {
        if ($row["showimage"]) {

           if($i % 9 == 0){
                echo '</div><div>';
            }

            echo '<a class="imgpop" href="images/portfolio/large/'.$row["codename"].'.jpg" rel="'.$row["namegroup"].'" title="'.$row["title"].' - '.$row["features"].'"><img src="images/portfolio/thumb/'.$row["codename"].'.jpg" alt="'.$row["title"].'" width="348"/><span class="imgpop-caption">'.$row["title"].'</span></a>';
        }
    $i++;
    }
    echo '</div>';
}

}

Объявите $i = 1 и напишите $i++ в конце цикла while.

if ($query->num_rows > 0) {
    // output data of each row
    echo '<div>';
    $i = 1; // declare $i = 1 here
    while($row = $query->fetch_assoc()) {

        if ($row["showimage"]) {
           if($i % 9 == 1){ // 10 , 19 ,28
                 echo '</div><div>';
           }
           echo '<a class="imgpop" href="images/portfolio/large/'.$row["codename"].'.jpg" rel="'.$row["namegroup"].'" title="'.$row["title"].' - '.$row["features"].'"><img src="images/portfolio/thumb/'.$row["codename"].'.jpg" alt="'.$row["title"].'" width="348"/><span class="imgpop-caption">'.$row["title"].'</span></a>';
        }
        $i++; // increment at end of the loop
    }
    echo '</div>';
}

Следуйте примеру синтаксиса я разработал его работу

    <?php
    $j=0; 
    for($i=0;$i<=50;$i++)
    {
        if($j==9)
        {

            echo $j.'hioiiiiiii<br/>';  //echo "</div><div>";
         $j=-1; 
        }
       $j++;
    }

    ?>
Другие вопросы по тегам