<?
//------------------------------- 페이지 출력용 변수 --------
$line_scale = 15; // 한페이지당 줄 수
$page_scale = 10; // 페이지 표시 수
if(!$page)
// 첫페이지 수
{
$start = 0;
$page = 1;
}
else
{
$start = $page*$line_scale - $line_scale;
}
if(!$page_start)
{
$page_start = 1;
}
//-----------------------------------------------------------
........ 중략!
$qry_list = "select .......";
$result_list = sybase_query($qry_list, $conn);
$CNT_LIST = sybase_num_rows($result_list); // 검색결과 카운트(for loop)
//------------------ 지정된 줄수까지-----------------------
if(($CNT_LIST-$start) < $line_scale)
{
$line_end = $CNT_LIST;
}
else
{
$line_end = $page*$line_scale;
}
//---------------------------------------------------------
for($i = $start; $i < $line_end; $i++)
{
sybase_data_seek($result_list, $i);
$row_list = sybase_fetch_array($result_list);
$MSG_ID = $row_list[msg_id];
$NO = $i + 1;
} //end for($i=0; $i < $CNT; $i++)
if($CNT_LIST!='0')
{
$TOT_PAGE = ceil($CNT_LIST / $line_scale); // 총페이지수
if($page_start > $page_scale)
{
$P_PAGE_START = $page_start - $page_scale;
$P_PAGE = $page_start -1;
echo("<a href='.....?page_start=$P_PAGE_START&page=$P_PAGE'>[Prev]</a>");
}
if(($TOT_PAGE-$page_start) < $page_scale)
{
for($i = $page_start; $i <= $TOT_PAGE; $i++)
{
if ($page == $i)
echo("<font color='red'><b>[$i]</b></font>");
else
echo("[<a href='...?page=$i&page_start=$page_start'>$i</a>]");
}
}
else
{
for($i = $page_start; $i < ($page_start+$page_scale); $i++)
{
if ($page == $i)
echo("<font color='red'><b>[$i]</b></font>");
else
echo("[<a href='...?page=$i&page_start=$page_start'>$i</a>]");
}
}
if(($page_start + $page_scale) <= $TOT_PAGE)
{
$N_PAGE_START = $page_start + $page_scale;
echo("<a href='...?page_start=$N_PAGE_START&page=$N_PAGE_START'>[Next]</a>");
}
}
?>
이렇게 한번해봐여!!!!
되면 술사시구여......
>>박성철 님께서 쓰시길<<
:: 제가 첫 질문을 올리는 사람이 되었네요.
:: 예전부터 사이베이스 게시판이 생기면 묻고 싶은 질문이 있습니다.
:: 계시판이나 검색 엔진에 보면 전체 목록을 10개나 20개씩 묶어서 페이지별로
:: 보여주 잖아요? 목록 밑에는 페이 번호가
:: <<prev 1,2,3,4,5,6,7,8,9,10 next>>
:: 이런 식으로 나오고...
:: 그런데 아무리 생각해도 전체 select된 row 중에서 특정 위치의 것 부터 n개를
:: fetch하는 방법을 모르겠네요.
:: 제가 sybase를 많이 쓰지 않아서 연구할 기회가 없었지만...
:: 제가 아는 사람은 처음부터 fetch해 와서 원하는 위치가 될때까지 그냥 버리고
:: 원하는 자료가 fetch되면 그것을 취하는 방법을 쓰는데...너무 원시적인 것 같고...
:: 저는 select 된 row의 identity만 fetch 해 와서 원하는 자료의 id들을 얻은 다음
:: 다시 query를 날리는 방법을 씁니다만...
:: 좋은 방법 있으면 알려주세요.
:: 결국 postgresql의 limit 같은 것을 구현하는 질문이네요.
:: 오라클에서는 rownum이랑 hint를 사용해서 구현하는데... informix랑 sybase는 영... 모르겠네요. sele
:: ct top n 으로는 안될 것 같고...
::
::
|