테스트 사이트 - 개발 중인 베타 버전입니다

게시글 출력 시 여분 필드 값에 따라 div 묶는 방법? 채택완료

굼떠 2년 전 조회 1,870

안녕하세요~ 회사 홈페이지 연혁을 게시판으로 등록을 하고 있는데 여분 필드 값에 따라 div를 묶는 방법이 있을까요? 

</p>

<p> <div class="tbl_head01 tbl_wrap"></p>

<p>        <ul class="year_total mt-80"></p>

<p>        <?php for ($i=0; $i<count($list); $i++) {</p>

<p>                $edit_href = "../bbs/write.php?w=u&bo_table=$bo_table&wr_id=".$list[$i][wr_id];</p>

<p>         ?></p>

<p>        <li class="pro<?php echo $list[$i]['wr_15'] ?>"></p>

<p>            <div class="res_pd clear"></p>

<p>                <div class="year mc"><?php echo $list[$i]['wr_15'] ?> <?php if ($is_checkbox) { ?><label for="chk_wr_id_<?php echo $i ?>" class="sound_only"><?php echo $list[$i]['wr_15'] ?></label><input type="checkbox" name="chk_wr_id[]" value="<?php echo $list[$i]['wr_id'] ?>" id="chk_wr_id_<?php echo $i ?>"><?php } ?></div></p>

<p>                <div class="con"><a href="<?php echo $list[$i]['href'].'&amp;sca='.urlencode($list[$i]['ca_name']); ?>"></p>

<p>                <?php echo $list[$i]['wr_subject'] ?></p>

<p>                </div></p>

<p>            </div></p>

<p>        </li></p>

<p>        <? } ?></p>

<p>    </ul></p>

<p>    </div></p>

<p>

 

리스트 출력은 현재 이렇습니다. wr_15에는 시행년도가 기록되는데

해당 년도에 리스트가 여러개면 같은 숫자가 반복되는게 보기에 썩 좋지가 않아서

wr_15의 값이 동일한 리스트만 한곳에 묶였으면 좋겠네요.

<기존 모양>

 

<원하는 모양>

 

 

아참. 해당 게시판은 wr_15 값에 따라 내림차순으로 정렬하고 있습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
2년 전

</p>

<p><?php

$is_checkbox = false;

$bo_table = 'test';

$list = [

    ['wr_id' => '9', 'href' => '#9', 'ca_name' => '1', 'wr_subject' => '9', 'wr_15' => '2023'],

    ['wr_id' => '8', 'href' => '#8', 'ca_name' => '1', 'wr_subject' => '8', 'wr_15' => '2022'],

    ['wr_id' => '7', 'href' => '#7', 'ca_name' => '1', 'wr_subject' => '7', 'wr_15' => '2022'],

    ['wr_id' => '6', 'href' => '#6', 'ca_name' => '1', 'wr_subject' => '6', 'wr_15' => '2022'],

    ['wr_id' => '5', 'href' => '#5', 'ca_name' => '1', 'wr_subject' => '5', 'wr_15' => '2022'],

    ['wr_id' => '4', 'href' => '#4', 'ca_name' => '1', 'wr_subject' => '4', 'wr_15' => '2022'],

    ['wr_id' => '3', 'href' => '#3', 'ca_name' => '1', 'wr_subject' => '3', 'wr_15' => '2021'],

    ['wr_id' => '2', 'href' => '#2', 'ca_name' => '1', 'wr_subject' => '2', 'wr_15' => '2020'],

    ['wr_id' => '1', 'href' => '#1', 'ca_name' => '1', 'wr_subject' => '1', 'wr_15' => '2020'],

];</p>

<p> </p>

<p>$wr_15_values = array_column($list, 'wr_15');

$wr_15_values = array_unique($wr_15_values);

?></p>

<p> </p>

<p><style>

.year_total { list-style-type: none; }

.year_total .year { font-size: 1.6em; font-weight: bold; color: #c0392b; }</p>

<p>.year_total .con { display: inline-block; }

<?php

$css = '';

foreach ($wr_15_values as $v) {

    $css .= '.year_total .pro' . $v . ' ~ .pro' . $v . ' .year { display: none; }' . PHP_EOL;

}

echo $css;

?>

</style></p>

<p> </p>

<p> <div class="tbl_head01 tbl_wrap">

        <ul class="year_total mt-80">

        <?php for ($i=0; $i<count($list); $i++) {

                $edit_href = "../bbs/write.php?w=u&bo_table=$bo_table&wr_id=".$list[$i]['wr_id'];

         ?>

        <li class="pro<?php echo $list[$i]['wr_15'] ?>">

            <div class="res_pd clear">

                <div class="year mc"><?php echo $list[$i]['wr_15'] ?></div>

                <?php if ($is_checkbox) { ?><input type="checkbox" name="chk_wr_id[]" value="<?php echo $list[$i]['wr_id'] ?>" id="chk_wr_id_<?php echo $i ?>"><?php } ?>

                <div class="con"><a href="<?php echo $list[$i]['href'].'&sca='.urlencode($list[$i]['ca_name']); ?>">

                <?php echo $list[$i]['wr_subject'] ?>

                </a></div>

            </div>

        </li>

        <?php } ?>

    </ul>

    </div></p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

다음과 같은 방법도 있으니 참고해 보세요

</p>

<p><div class="tbl_head01 tbl_wrap">

    <?php

    $current_year = null; // 초기값 설정</p>

<p>    for ($i = 0; $i < count($list); $i++) {

        $year = $list[$i]['wr_15'];</p>

<p>        // 현재 연도와 다르다면 새로운 그룹을 시작

        if ($year !== $current_year) {

            if ($current_year !== null) {

                // 이전 그룹을 닫음

                echo '</ul></div>';

            }</p>

<p>            // 새로운 그룹 시작

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

            echo '<h2>' . $year . '년 그룹</h2>';

            echo '<ul class="year_total mt-80">';

            $current_year = $year;

        }</p>

<p>        // 리스트 아이템 출력

        echo '<li class="pro' . $year . '">';

        echo '<div class="res_pd clear">';

        echo '<div class="year mc">' . $year . '</div>';

        echo '<div class="con"><a href="' . $list[$i]['href'] . '&sca=' . urlencode($list[$i]['ca_name']) . '">' . $list[$i]['wr_subject'] . '</a></div>';

        echo '</div>';

        echo '</li>';

    }</p>

<p>    // 마지막 그룹을 닫음

    echo '</ul></div>';

    ?>

</div>

이렇게 하면 동일한 연도의 리스트가 하나의 그룹으로 묶이게 될 것 같습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

cuwaaang
2년 전

여러 방법이있겠지만 지금 생각나는건

쿼리를 두개 쓰는방법이 있겠네요

wr_15 를 group by로 쿼리를 돌리거나 select distinct? 로 돌려서 묶어주고

그안에서 세부목록을 where 문에 wr_15를 조건으로 넣고 쿼리를돌려서

리스트를 만드는 방법이있겠네요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인