按类别拆分sql结果

时间:2016-08-09 13:05:03

标签: php mysql split

我从我正在返回的数据库中获取了一些数据,但目前它将所有内容都返回到一个大列表中。

数据的每个情侣项目都有一个类别名称。我想将每组分配了类别的项目分开。

Example:

test1 (has category testing)
test2 (has category testing)
test3 (has category testing123)

这些结果只显示在一个大清单中,我希望结果如下:

testing:
test1
test2

testing123:
test3

我该怎么做?

我现在的代码(仅限相关部分):

while ($row_items = mysqli_fetch_assoc($res_items)) {

        $checklist = '';
        if ($row_items['checkpoints'] != '') {
            $check = explode(',', $row_items['checkpoints']);
            foreach($check as $list) {
                $checklist .= '
                <li class="cataloguslist">
                    <i style="color:#e88f41;" class="fa fa-check-square" aria-hidden="true">
                </i> '.$list.'</li>'; 
            }
        }

        echo '
        <div class="col-lg-2 col-md-3 col-sm-6 col-xs-6 portf">
          <a class="fancybox" href="../../catalogus/'.$row_items['afbeelding'].'">
            <div class="gallery-item">
                <div class="image">
                    <img src="../../catalogus_icons/'.$row_items['afbeelding'].'.jpg" alt="" style="border:1px solid #ccc;" class="img-responsive" />
                </div>

                <div class="bottom-info" style="min-height:200px;">
                    <div class="name">'.$row_items['naam'].'</div>
                    <ul style="margin-left:35px;margin-top:10px;">'.$checklist.'</ul>
                    <a href="contact.php">
                        <button class="contact_button buttoncontact btn-primary" style="border-radius:2px;">
                            Vraag offerte aan
                            <span class="icon-mail-alt"></span>
                        </button>
                    </a>
                    <div class="contactlink">
                        <a href="contact.php">Neem contact op</a>
                    </div>
                </div>
            </div>
            </a>
        </div>';
    }

每个结果在数据库中都有一个cat行,它连接到producten_cats(idcat相同的表格及其中的类别名称以及表格名称:{ {1}};

1 个答案:

答案 0 :(得分:0)

很难说出您的类别名称在您的代码中的位置,因此我无法给您准确的答案。

要按照显示的方式拆分数据库结果集,请执行以下操作,以检测何时在数据库结果集中获得具有新category值的第一行。

$previous_category = "---nothing---";
while ($row_items = mysqli_fetch_assoc($res_items)) {

    $category = $row_items['category'];
    if ( $category != $previous_category ) {
        $previous_category = $category;
        /* show category header, for example */
        echo '<h2>$category:</h2>';
    } 
    $checkpoints = $row_items['checkpoints'];
    /* show details, for example */
    echo '<p>$checkpoints</p>';
    }

要使这种事情正常工作,您需要在查询中使用ORDER BY category

这种技术通常称为表示层格式化。它将MySQL提供的数据表转换为用户友好的布局。