list.php 리스트 카운트 및 페이징 질문드려요 채택완료
먼저 답변 주시는 분들께 항상 감사하다는 말씀 드립니다.
현재 답변글만 출력하는 용도로 list.php 를 따로 만들어서 리스트 출력부분에
</p>
<p> </p>
<p>if ($is_search_bbs) {</p>
<p>$sql = " select * from {$write_table} where {$sql_search} and wr_reply != '' {$sql_order} limit {$from_record}, $page_rows ";</p>
<p>} else {</p>
<p>$sql = " select * from {$write_table} where wr_is_comment = 0 and wr_reply != '' {$sql_apms_where} ";</p>
<p>if(!$is_notice_list && $notice_count)</p>
<p>$sql .= " and wr_id not in (".implode(', ', $arr_notice).") ";</p>
<p>$sql .= " {$sql_order} limit {$from_record}, $page_rows ";</p>
<p>}</p>
<p> </p>
<p>// 페이지의 공지개수가 목록수 보다 작을 때만 실행</p>
<p>$k = 0;</p>
<p>if($page_rows > 0) {</p>
<p>$result = sql_query($sql);</p>
<p> </p>
<p>while ($row = sql_fetch_array($result))</p>
<p>{</p>
<p>// 검색일 경우 wr_id만 얻었으므로 다시 한행을 얻는다</p>
<p>if ($sca || $stx)</p>
<p>$row = sql_fetch(" select * from {$write_table} where wr_id = '{$row['wr_id']}' ");</p>
<p> </p>
<p>$list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len']);</p>
<p> </p>
<p>
위와 같이 세팅해서 일반 리스트나 분류 리스트 모두 답글만 출력이 잘 되고 있습니다
혹시 이 쿼리에서 비효율적이거나 문제 있는 부분이 있다면 그것도 지적 부탁드리겠습니다!
헌데 카운트 쪽을 손을 보려 하니까 골치가 아프네요 ㅠㅠ
</p>
<p> </p>
<p>if ($sca || $stx || $stx === '0') { //검색이면</p>
<p>$is_search_bbs = true; //검색구분변수 true 지정</p>
<p>$sql_search = get_sql_search($sca, $sfl, $stx, $sop);</p>
<p> </p>
<p> // 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)</p>
<p>$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";</p>
<p>$row = sql_fetch($sql);</p>
<p>$min_spt = (int)$row['min_wr_num'];</p>
<p> </p>
<p>if (!$spt) $spt = $min_spt;</p>
<p> </p>
<p>$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";</p>
<p> </p>
<p> if($sql_apms_where) $sql_search .= $sql_apms_where;</p>
<p> </p>
<p>// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)</p>
<p>// 라엘님 제안 코드로 대체 <a href="http://sir.kr/g5_bug/2922" target="_blank" rel="noopener noreferrer">http://sir.kr/g5_bug/2922</a></p>
<p>$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";</p>
<p>$row = sql_fetch($sql);</p>
<p>$total_count = $row['cnt'];</p>
<p> </p>
<p>
여기까지가 페이징 및 카운트 부분인 듯 한데
$sql_search = 든 $sql = 든 $sql_search .= 이든간에 어디든지 " and wr_reply != '' " 갖다붙이게되면
$sca 출력 부분에 영향을 끼쳐서인지
분류 선택 시 목록에서 리스트가 싹 사라져버리네요;;
혹시 다른 방법이 있다면 가르쳐주시길 부탁드리겠습니다!
답변 1개
맨아래 코드의 영역에서
02번라인의 if문 시작에서 닫는 중괄호 } 가 없구요
13번라인의
$sql_search
구분이 이전에 sql_search 가 아무것도 없는경우
19번 라인의
where 이후에 바로 where and 구조가 되서 문법오류가 납니다.
13번 라인의
$sql_search 의 값이 유무에 따라
and를 넣을지 말지를 정하셔야 할듯합니다.
그게 아니라면
19번 라인의 where 절 바로뒤에 (1) 혹은 1=1 을 추가해도 됩니다.
답변에 대한 댓글 2개
잘해결되셨다니 다행입니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
자문자답 해결했습니다 ㅠㅠ
[code]
if ($sca || $stx || $stx === '0') { //검색이면
$is_search_bbs = true; //검색구분변수 true 지정
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
$row = sql_fetch($sql);
$min_spt = (int)$row['min_wr_num'];
if (!$spt) $spt = $min_spt;
$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
if($sql_apms_where) $sql_search .= $sql_apms_where;
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
// 라엘님 제안 코드로 대체 http://sir.kr/g5_bug/2922
$sql = " SELECT COUNT(*) AS `cnt` FROM {$write_table} WHERE {$sql_search} and wr_reply != '' ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
/*
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";
$result = sql_query($sql);
$total_count = sql_num_rows($result);
*/
} else {
[/code]
위 코드로 답글 갯수만 뽑아오기 성공했습니다 ^^