게시판 리스트에서 중복은 제거하고 출력 하는 방법

게시판 리스트에서 중복은 제거하고 출력 하는 방법

QA

게시판 리스트에서 중복은 제거하고 출력 하는 방법

본문

게시글마다 wr_1에 데이터가 들어가 있어요..

게시물중에 wr_1의 값이 중복되는 게시물(제목은 다름)은 최근걸로 하나만 출력하고 싶습니다.

어떻게 코드를 만져야 할까요 ㅠㅠ

 

이 질문에 댓글 쓰기 :

답변 4

bbs/list.php 에서 뿐만 아니라 어느곳에서 해도 상당히 복잡합니다

대상게시판도 따로 있을 것이고 검색 코드, 하단 페이징 만들기, 전체 게시물수, 공지사항 등

고려사항이 많아서 list.php에 distinct나 group by 넣어서 한줄로 해결될 문제가 아닙니다

===================================

간단한 방법으로는

해당 게시판 스킨 list.skin.php 상단에서

출력할 wr_1에 해당하는 레코드 wr_2에 'OK' 넣는 코드를 만들어서 리스트를 열어본 후 코드삭제

write_update.skin.php 를 만들고

if(!$w){

 1. 신규등록 wr_1값과 같은 기존 wr_1의 wr_2 값 제거 코드

 2. 방금등록한 게시물 wr_2에 'OK' 넣는 코드

}

 

list.php 상단에서 아래 코드만 추가하면 됩니다

if($bo_table=='대상게시판'){ $sfl='wr_2'; $stx='OK'; }

 

 

 

https://github.com/gnuboard/gnuboard5/blob/master/bbs/list.php

에서 SELECT 절에 필드 재 나열, DISTINCT 키워드 또는 GROUP BY 키워드를 추가해 볼수 있는데

문제는 데이터가 많아질수록 성능이 더 떨어집니다.

 

대안으로는 중복데이터를 주기적으로 삭제하는 스케줄링을 하거나

별도 테이블에 중복데이터가 없도록 따로 관리하는 방법이 있습니다.

어디서 사용하시느냐에 따라서 다를듯 합니다.

게시판 리스트에서 하시면 작업이 좀 복잡할듯 하고요.

그외에 출력하시는거라면 distinct 로 중복을 제거하시면 됩니다.


<?php
// 게시물 데이터가 있는 배열 (예시)
$posts = [
    ["title" => "게시물 1", "wr_1" => 100, "date" => "2023-10-01"],
    ["title" => "게시물 2", "wr_1" => 200, "date" => "2023-10-02"],
    ["title" => "게시물 3", "wr_1" => 100, "date" => "2023-10-03"],
    ["title" => "게시물 4", "wr_1" => 300, "date" => "2023-10-04"],
];
// 중복된 wr_1 값을 저장할 배열
$seenWr1 = [];
// 최근 게시물을 저장할 배열
$latestPosts = [];
// 게시물을 순회하면서 중복된 wr_1 값을 처리
foreach (array_reverse($posts) as $post) {
    $wr1 = $post["wr_1"];
    if (!in_array($wr1, $seenWr1)) {
        $seenWr1[] = $wr1;
        $latestPosts[$wr1] = $post;
    }
}
// 최근 게시물 출력
foreach ($latestPosts as $wr1 => $post) {
    echo "게시물 제목: " . $post["title"] . ", wr_1 값: " . $wr1 . ", 날짜: " . $post["date"] . "\n";
}
?>

이 코드를 응용 하라네요.

답변을 작성하시기 전에 로그인 해주세요.
전체 14
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT