통합게시판 질문드립니다.

통합게시판 질문드립니다.

QA

통합게시판 질문드립니다.

본문

안녕하세요 

 

제가 게시판을 통합해서 게시판에 가져오고 싶은데 그런 게시판 스킨이나 

 

아니면 게시판 어떤부분을 뜯어 고쳐야 될까요??

 

게시판 속성이 전부 다 달라서 어떤식으로 해야 될지 모르겠네요

 

제가 개발자가아니라 퍼블리셔인데 개발자공부를 하고 있는 중이라 지식이 많이 부족하네요 ㅠㅠ

 

아니면 페이지에 카테고리를 만들어 카테고리 클릭하면 그 게시판에 해당되는 게시판 리스트를

 

출력하고 싶은데 혹시 리스트만 가져올수 있나요?? 

 

최신글로 게시판 가져오려고 했더니 이미지와, 들고올수 있는 양이 정해져있어서 안되서 힘드네요 ㅠㅠ

 

개발자 선배님들 많은 조언 부탁드립니다. 

이 질문에 댓글 쓰기 :

답변 3

직접 구현이 가능하신분이시면

 

g5_board 테이블에보면

bo_table이라는 필드에 각 게시판들이 있습니다.

 

조회를 2단계를 거쳐야죠

1. 조회를bo_table

 

2. 루프로 bo_table의 bo_table명을 추출 하면서

      sql문을 union all  합니다.

3. 루프 종료후

    union all 된 쿼리를 조회

   원하는 값들을 처리 

 

와 같이 처리하시면 됩니다.

   

 

 

비슷하지만 추천만 제외하면 원하시는 기능의 구현이 되는 쿼리/소스 구현한 내용입니다.

참고하세요

https://sir.kr/qa/218185?vpage=1#answer_218207

 

아 ㅠㅠ 그냥 테스트페이지에 sql 문을 그대로


<?php
$sql = "select * from g5_board where bo_use_good = '1'";
$result = sql_query($sql)

$sqls = "";
while($row = sql_fetch_array($result)) {
    if ($sqls != "") $sqls .= " union all \n";
    $sqls .= " select ".$row[bo_table]." botable, a.* from g5_write_".$row[bo_table]." a  where wr_good > 0 \n";
}

$result2 = sql_query($sqls);
while ($row = sql_fetch_array($result2)) {
    echo "<a href='/bbs/board/php?bo_table=".$row[botable]."&wr_id=".$row[wr_id];
    echo  $row['wr_subject']."</a><br/>";
}
?>


저렇게 적었을때 화면에 나오는지 궁금해서 적었는데 아무것도 안뜨네요 ㅠㅠ 홈페이지 오류만 나오던데 다른곳에 입력 해야 되는건가요???

상단의 다른 내용없이 저것만 파일로 구성하시면 오류나올겁니다.

테스트 페이지를 구성하신 경로도 확인하셔야 하구요

 

그루보드 설치 디렉토리라고 가정하고 

 

보통  맨위 상단에

 

include_once("./_common.php");

이걸 적으셔야 다른것들도 작동가능합니다.

아 제가 코드 쓸때 head common 부분을 안적어 드리고 올렸습니다.


$sql = "select * from g5_board where bo_table='brwork'";
$result = sql_query($sql)


이 두줄을 적었을때는 오류가 안나는데

그 아래줄

$sqls = "";
while($row = sql_fetch_array($result)) {
    if ($sqls != "") $sqls .= " union all \n";
    $sqls .= " select ".$row[bo_table]." botable, a.* from g5_write_".$row[bo_table]" a  where wr_good > 0 \n";
}

$result2 = sql_query($sqls);
while ($row = sql_fetch_array($result2)) {
    echo "<a href='/bbs/board/php?bo_table=".$row[botable]."&wr_id=".$row[wr_id];
    echo  $row['wr_subject']."</a><br/>";
}


이부분을 적으면 오류가 나네요 ㅠㅠ

botable, a.* from g5_write_".$row[bo_table]" a  where wr_good > 0 \n

위의 부분을 어떻게 고쳐야될까요?? where뒤에 bo_tale="brwork" 이렇게  테이블 명을 적어야 되나요?? mysql 명령어도 좀 찾아보고 수정 하고 싶은데 저부분이 어디를 뜻하는건지 찾지를 못하겠네요 ㅠㅠ


$sql = "select * from g5_board where bo_table='brwork'";

이부분은

 

그누보드의 테이블 설정중에서

g5_write_brwork 테이블만 보려고한다는 표현입니다.

 

 

 

저는 첫번째 while 문에서

botable, a.* from g5_write_".$row[bo_table]" a  where wr_good > 0 \n

좋아요 누른 글을 찾는건 해석을 하는데 글의 리스트를 가져오는 부분을 어디에 적어야 될지 아직 감이 전혀 안잡히네요 ㅠㅠ

마지막 where 뒤에 wr_good 부분을 지우고 테이블명이나, bo_table="brwork" 를 적어도 안되서요...

아.. 이런문제가 생길때 위에 상사가 없다는게 너무 힘드네요 ㅠㅠ..........


첫번째 sql 문은 게시판의 설정정보가 있는 테이블
g5_board 의 bo_table 값을 찾기 위함입니다.
테이블리스트 중에서 bo_use_good = '1' 은 추천기능이 활성화된 정보를 찾고

찾아진 Row들을 돌면서

각 테이블의 추천이 있는것을 찾아야겠죠
그것을

While문으로 한방쿼리를 만드는겁니다.

$sqls = ""
while ($row ........) {
  if ($sqls != "") $sqls .= "union all";  // 여기는 선행된쿼리가 존재할때 union all 을 붙이는거구요
 
  $sqls .= " select * from g5_write_".$row[bo_table]." a where 조건들......";
}
로 $sqls 문장을 만든후

$result2 = sql_query($sqls);
while($row2 = sql_fetch_array($result2)) {
    // 조건에 해당되는 테이블들의 합에 해당되는 처리
    // 위에서 order by 는 생략되어있습니다.
}

//와 같이 원하는 처리를 하면되죠

두번째로
bo_table 에where 조건들인데

bo_table = 'mediapol' 이면서
bo_table = 'brwork' 인것은

절대 존재하지 않죠

g5_board 테이블에 1row 별로 bo_table 값은 1개 밖에 없으니까요
둘다 해당되는건 나타날수가 없는거죠

하고싶은걸 구현하려면
and 가 아닌
or로 구현해야 합니다.

또는
bo_table in ('mediapol','brwork') 과 같이 in 으로 구성해야겠죠

where절 뒤에 복합조건은 맞지만
and는 내용을 추리고추리고추릴때
or는 이것도 나오고 저것도 나오고 할때
in은 이것과 저것이 필요할대

라고 봐야합니다.

아 감사합니다. 제가


<?php
include_once('../common.php');
include_once('../head.php');

// $row = sql_fetch("select * from g5_board where bo_table in ('brwork','mkwork','mediapol') ");
// echo $row[bo_table];

$sql = "select * from g5_board where bo_table in ('mediapol','brwork','mkwork')";
$result = sql_query($sql);

$sqls = "";
while($row = sql_fetch_array($result)) {
    if ($sqls != "") $sqls .= " union all \n";
    $sqls .= "select * from g5_write_".$row[bo_table]." where wr_id > 0";
}

$result2 = sql_query($sqls);
while ($row = sql_fetch_array($result2)) {
    echo "<a href='/bbs/board/php?bo_table=".$row[bo_table]."&wr_id=".$row[wr_id];
    echo  $row['wr_subject']."</a><br/>";
}
?>
<?
include_once('../tail.php');
?>


이렇게 페이지에 입력했는데 빈내용이 나오던데 어떤 문제가 있는걸 까요??

ㅠㅠ

result2 이부분이 잘못 된걸 까요???

아..많이 질문 드려서 죄송합니다.



우선
g5_write_테이블

여기에는 bo_table 필드가 없습니다

당연히 빈값이 나올겁니다.


제가 위에서

select ".$row[bo_table]." botable, a.* from g5_write_".$row[bo_table]" a  where wr_good > 0
이렇게
표기한데는 이유가 있습니다.


두번째
위의 쿼리로 구현한건 bo_table의 값을 상위테이블에서 불러서 셋팅하기 위함입니다.
그리고, wr_id > 0 은 없어도 되는 코드이고
wr_good > 0 은 추천이 1이라도 있는것을 표현한겁니다.

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

회원로그인

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