Как я могу сгенерировать столбцы на основе группы и количества элементов? - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть данные в разных категориях.Пример: салаты, десерты

Я хочу сгруппировать их по категориям, а также только по 5 наименований в столбце.

 <div>
<h3>Salads</h3>
<div>
salad 0
salad 1
salad 2
salad 3
salad 4
</div>
<div>
salad 5
salad 6
salad 7
salad 8
salad 9
salad 10
</div>
<div>
salad 11
</div>
</div>

    <div> 
    <h3> Desserts</h3>
<div>
Dessert 1
Dessert 2
Dessert 3
Dessert 4
Dessert 5
</div>

    <div>
    Dessert 6
    </div>

        </div>

Как мне добиться этого с помощью php?Нужна помощь.Заранее спасибо.

Вот код, который я использую.Проблема с этим кодом заключается в том, что если в категории есть четное количество элементов, она не работает.Если нечетное количество предметов, то оно отлично работает.

    $itemsperrow = 2;

$sql_menugrouptbl = "SELECT category FROM ck_menulist GROUP BY category ORDER BY id";
$result = $conn->query($sql_menugrouptbl);
$result->execute(); 
echo "Total category: ". $result->rowcount(); 

foreach($result as $row){

    $categ = $row['category'];



    $sql_menulisttbl = "SELECT * FROM ck_menulist WHERE category  = '$categ'";
    $stmt = $conn->Prepare($sql_menulisttbl); 
    $stmt ->execute();
    $countmenulist = $stmt->rowcount();
    echo "<h1>".$categ." (".$countmenulist.")</h1>"; 

    foreach($stmt as $rowitem){

    if ($countmenulist % $itemsperrow == 1)
    {  
       echo "<div class=\"col-md-4 jt_col column_container\">";    
       echo "<div class=\"voffset10\"></div>";
       echo "<ul class=\"menu\">";
    }
       echo "<li>";
       echo $rowitem['itemname'];
       echo "<div class=\"detail\">".$rowitem['itemdescription']." <span class=\"price\">$ ".$rowitem['price']."</span></div>";
       echo "</li>";

    if ($countmenulist%$itemsperrow == 0)
    {
        echo "\n";
        echo "</div>";
        echo "\n";
    }
    $countmenulist++;

    }



      if ($countmenulist%$itemsperrow != 1) {
            echo "\n";
            echo "</div>";
        }

    }

1 Ответ

0 голосов
/ 10 декабря 2018

Попробуйте разбить массив, как показано ниже:

$sql_menugrouptbl = "SELECT category FROM ck_menulist GROUP BY category ORDER BY id";
$result = $conn->query($sql_menugrouptbl);
$result->execute(); 
echo "Total category: ". $result->rowcount(); 

foreach($result as $row){

    $categ = $row['category'];



    $sql_menulisttbl = "SELECT * FROM ck_menulist WHERE category  = '$categ'";
    $stmt = $conn->Prepare($sql_menulisttbl); 
    $stmt ->execute();
    $countmenulist = $stmt->rowcount();
    echo "<h1>".$categ." (".$countmenulist.")</h1>"; 

    $splitted_item = array_chunk($stmt, $itemsperrow, true);
    foreach($splitted_item as $sub_menu){
        echo "<div class=\"col-md-4 jt_col column_container\">";    
        echo "<div class=\"voffset10\"></div>";
        echo "<ul class=\"menu\">"; 
        foreach($sub_menu as $rowitem){
            echo "<li>";
            echo $rowitem['itemname'];
            echo "<div class=\"detail\">".$rowitem['itemdescription']." <span class=\"price\">$ ".$rowitem['price']."</span></div>";
            echo "</li>";
        }
        echo "</ul>"; 
        echo "\n";
        echo "</div>";
        echo "\n";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...