최신글을 포인트 건 순서대로 뽑으려고 합니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

최신글을 포인트 건 순서대로 뽑으려고 합니다. 정보

최신글을 포인트 건 순서대로 뽑으려고 합니다.

본문

포인트가 여분 필드(wr_N)에 있다고 하면

select * from 해당_게시판 order by wr_N desc limit 가져오고 싶은 갯수

이런 식으로 query문을 사용하시면 됩니다.
lib/latest.lib.php를 복사 하셔서 하나 새로 만드는 것도 좋은 방법입니다.
*****************************************************************************************


얼마전에 질문을 드려서 위와같은 답변을 받았습니다.
그래서 extend폴더에 아래와같이 latest_point.php를 하나 만들고 불러올 페이지에는
<?=latest_point("h1(스킨이름)", "h1_1(게시판이름)", 5, 24);?>이렇게 호출했습니다.
그랬더니
select * from where bo_table = 'h1_1
1064 : You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'where bo_table = 'h1_1' at line 1
error file : /g4/h1.php

이렇게 나옵니다.
아직 php초보라 뭐가 잘못되었는지 해석이 안됩니다.
도와주시면 정말 감사하겠습니다.
 
 
----extend/latest_point.php의 내용입니다.-----

<?
if (!defined('_GNUBOARD_')) exit;

// 최신글 추출
function latest_point($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="")
{
    global $g4;

    if ($skin_dir)
        $latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
    else
        $latest_skin_path = "$g4[path]/skin/latest/basic";



    $list = array();


    $sql = " select * from $g4[bo_table] where bo_table = '$bo_table";
               
    $board = sql_fetch($sql);

    $tmp_write_table = $g4['write_prefix'] . $board['bo_table']; // 게시판 테이블 전체이름
    //$sql = " select * from $tmp_write_table where wr_is_comment = 0 order by wr_id desc limit 0, $rows ";
    // 위의 코드 보다 속도가 빠름
    $sql = " select * from $g4[bo_table] where wr_is_comment = 0 order by wr_1 desc limit 5, $rows ";
    //explain($sql);
    $result = sql_query($sql);
    for ($i=0; $row = sql_fetch_array($result); $i++)
        $list[$i] = get_list($row, $board, $latest_skin_path, $subject_len);
   
    ob_start();
    include "$latest_skin_path/latest.skin.php";
    $content = ob_get_contents();
    ob_end_clean();

    return $content;
}
----extend/latest_point.php의 내용 여기까지입니다.-----
?>

댓글 전체

에러가 난 문장을 잘 보세요
select * from where bo_table = 'h1_1

그리고 에러가 난 부분의 소스를 잘 보세요
$sql = " select * from $g4[bo_table] where bo_table = '$bo_table";

select * from <이부분> where bo_table = 'h1_1<이부분>

$g4[bo_table] 값이 없고 'h1_1 닫는 작은 따옴표가 없네요
<?
if (!defined('_GNUBOARD_')) exit;

// 최신글 추출
function latest_point($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="")
{
    global $g4;

    if ($skin_dir)
        $latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
    else
        $latest_skin_path = "$g4[path]/skin/latest/basic";



    $list = array();



  $sql = "select * from $g4[bo_table] where bo_table =$bo_table";


               
    $board = sql_fetch($sql);

    $tmp_write_table = $g4['write_prefix'] . $board['bo_table']; // 게시판 테이블 전체이름
    //$sql = " select * from $tmp_write_table where wr_is_comment = 0 order by wr_1 desc limit 0, $rows ";

    // 위의 코드 보다 속도가 빠름
    $sql = " select * from $g4[bo_table] where wr_is_comment = 0 order by wr_1 desc limit 0, $rows ";
    //explain($sql);
    $result = sql_query($sql);
    for ($i=0; $row = sql_fetch_array($result); $i++)
        $list[$i] = get_list($row, $board, $latest_skin_path, $subject_len);
   
    ob_start();
    include "$latest_skin_path/latest.skin.php";
    $content = ob_get_contents();
    ob_end_clean();

    return $content;
}
?>

위와같이 수정을 해봤는데요.여전히
select * from where bo_table =h1_1

1064 : You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'where bo_table =h1_1' at line 1

error file : /g4/h1.php
이런 에러가 나옵니다.
다시 한번 봐주시면 정말 고맙겠습니다.
$sql = "select * from $g4[bo_table] where bo_table =$bo_table";
이 문장을 원본과 비교해 보세요
아마 $g4[bo_table]이라는 변수가 아닐 겁니다..
그런 변수가 없어 공백으로 값이 들어간다니까요...

그리고 닫는 따옴표가 빠졌다고 했는데 아예 따옴표를 없애버리다니 에쿠...
bo_table =$bo_table"; ==>bo_table ='$bo_table' ";
드디어 되네요!
두분께 너무 감사드립니다.
그리고 에러를 보는 방법도 조금 알것같습니다.
넥스트스텝님과, 균이님 정말 고맙습니다.
꾸벅~~
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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