database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
ㆍInformix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Informix Q&A 250 게시물 읽기
No. 250
Re: seek 함수 구현에 관해서....
작성자
hahaman
작성일
2000-07-27 19:51
조회수
8,978

게시판 등에서 원하는 분량만을 화면에 보이게 하는 방법은 여러 가지가 있습니다.

mysql 같은 DBMS는 웹을 견향해서 만들어 졌다고 해도 과언이 아니겠지만

informix 나 oracle은 꼭 그런것은 아니겠죠! 하지만 php에서 mysql을 위한 seek 함수를 지원한다고 해서 그게 꼭 빠르다고는 할 수 없습니다. 겉보기에는 원하는

내용만을 가져 오는 것 처럼 보이지만 내부적으로는 질의한 결과 전체에서 원하는

부분만을 가져 오는데... 예를 들면 informix 의 select first 20 * from test order by regdate; 이런 질의가 있다면 결국은 전체를 질의로 가져온 후에 20개를 가져 올뿐 실제 20개만을 구해서 가져 오지는 않습니다. 그렇다면 mysql에서 지원하는

seek 함수를 어떻게 프로그래밍 할까요?

 

구현의 예를 소스로 올려 드릴테니 참조해 보시기 바랍니다.

이를 구현하는 방법이 여러가지 있지만 아래 방법이 일반적인것 같습니다.

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

<?

include ("header.inc");

if (!$l_start) { $l_start = 1; } // 전체중 원하는 곳의 seek 값이라고 보면 됩니다.

if (!$l_scale) { $l_scale = 10; } // 리스트의 수를 나타냅니다. 기본이 10 이죠

if (!$l_pscale) { $l_pscale = 10; } // 페이지의 수입니다.

if (!$l_search) { $l_search = ""; } else { $l_search = trim($l_search);} // 검색시에 사용합니다.

?>

 

<script language="javascript">

function open_mail(frmmail) {

newwindow=open('',"popupnav","location=no,scrollbars=yes,toolbar=no,directories=no,menubar=no,resizable=yes,status=no,screenX=10,screenY=10,width=640,height=480");

frmmail.submit();

}

</script>

 

<? include ("function.inc"); ?>

</head>

<? include ("connect.inc"); ?>

 

<body bgcolor='#FFFFFF' margin=5 marginwidth=5 marginheight=5 topmargin=5 leftmargin=5>

<table border = 0 cellspacing = 0 cellpadding = 0 width='620' bgcolor='#F7FAF6'>

<tr>

<td valign='top' align="left" bgcolor='#CBE4C9'>

 

<?

if ($mode == "psearch" || $l_search) { $mode_type = "S"; } // 파워 서치 결과..

if ($mode == "" && $comp_id == "") { $mode_type = "N"; } // Normal 리스트

if ($mode == "" && $comp_id ) { $mode_type = "E"; } // 회원 Offer정보 리스트

 

echo "</td></tr><tr><td align = 'center'><br><br>";

 

$table_name = "trade_offer_" . $l_type;

 

if($mode_type == "S"){

$query = "SELECT -- + INDEX( trade_company name_c)\n";

}else{

$query = "SELECT -- + INDEX( trade_company list_c)\n";

}

$query .= " comp_id,company,url, regdate , description[1,200]" .

" FROM trade_company WHERE url <> '' and not url is null";

if ($l_big){ $query .= " and big = "$l_big""; }

if ($l_hscode){ $query .= " and hscode[1,2] = "$l_hscode""; }

if ($l_search){ $query .= " and lower(company) like "%" . strtolower($l_search) . "%""; }

 

$query .= " order by regdate desc";

 

echo "<table border = 0 cellspacing = 0 cellpadding = 0 width='620'>";

echo "<form>"; // 네스케이프에서는 form 태그가 있어야 버튼이 보이므로....

 

$result = ifx_prepare($query,$conn_id);

result_prepare($result,$conn_id);

 

$l_link1 = "<a href =" . $PHP_SELF . "?l_start=";

$l_link2 = "&l_search=" . $l_search . "&l_big=" . $l_big . "&l_type=" . $l_type . "&l_hscode=" . $l_hscode . ">";

 

$row = ifx_fetch_row($result);

while(is_array($row)){

 

$l_count = ifx_num_rows($result); // 아래는 원하는 부분만을 화면에 출력함

if ($l_count >= $l_start and $l_count <= $l_start + $l_scale -1){

echo "<tr><td align = 'left'>";

echo "<font color='#CC0000'>" . $l_count . "</font>&nbsp;";

 

if($l_type == "C"){

$url = strchr($row[url],"http");

if ($url){

echo "<a href='" . $row["url"] . "' target='_new'><b>" . stripslashes($row["company"]) . "</b></a><br>" . $row["description"] . "...<br><font color = '#196B75' size=1>";

}else{

echo "<a href='http://" . $row["url"] . "' target='_new'><b>" . stripslashes($row["company"]) . "</b></a><br>" . $row["description"] . "...<br><font color = '#196B75' size=1>";

}

}else{

echo "<a href = "view.html?l_comp_id=" . $row["comp_id"] . "&l_no=" . $row["no"] . "&l_type=" . $l_type . "&l_big=" . $l_big . "&l_hscode=" . $l_hscode . "">" .

"<b>" . stripslashes($row["subject"]) . "</b></a><br>" . stripslashes($row["description"]) . "...<br><font color = '#196B75' size=1>";

 

if ($row["sitecode"] ==''){ echo "[Hand] "; }else{ echo "[Auto] "; }

echo "&nbsp;[Relevance: " . $row["reliability"] ."%]&nbsp;&nbsp;";

}

echo $row["regdate"] . "</font>&nbsp;";

 

echo"<br><br></td></tr>";

}

$row = ifx_fetch_row($result,"NEXT");

}

 

$l_total = ifx_num_rows($result);

 

echo ("<TR bgcolor='#CBE4C9' onMouseOver="this.style.backgroundColor='#C4DAFF';return true;" onMouseOut="this.style.backgroundColor='';return true;"><td colspan='4' align='right'>");

if ( $l_total == 0 ){ echo ("<b>Not found data.&nbsp;&nbsp;&nbsp;</b>"); }

echo ("Total: $l_total &nbsp;&nbsp;&nbsp;</td></tr>\n");

 

ifx_free_result($result);

echo "</table><br>";

 

echo "&nbsp;<input type='button' value='Back' onclick='javascript:history.back()'></form><br>";

 

// 여기서 부터는 각 페이지및 페이지의 << >>를 나타냅니다.

if($l_total > $l_scale){

$l_prev = $l_start - $l_scale;

$l_next = $l_start + $l_scale;

$l_page = floor($l_start/($l_scale * $l_pscale));

 

if ($l_prev >= 1){ echo "[" . $l_link1 . "1" . $l_link2 . "First</a>] "; }

 

$pre_start = ($l_page - 1) * ($l_scale * $l_pscale) + 1;

if($pre_start >= 1){ echo "[" . $l_link1 . $pre_start . $l_link2 . "Prev Page</a>] "; }

if ($l_prev >= 1){ echo "[" . $l_link1 . $l_prev . $l_link2 . "Prev</a>] "; }

 

for($vj=0; $vj < $l_pscale ; $vj++){

$ln = ($l_page * $l_pscale + $vj) * $l_scale + 1;

$vk= $l_page * $l_pscale + $vj + 1;

if( $ln < $l_total ){

if($ln != $l_start){

echo "&nbsp;[" . $l_link1 . $ln . $l_link2 . $vk . "</a>]";

}else{

echo "&nbsp;<font color=red>" . $vk . "</font>";

}

}

}

 

if ($l_next <= ($l_total - $l_scale)){ echo " [" . $l_link1 . $l_next . $l_link2 . "Next</a>]"; }

 

$n_start=($l_page + 1) * $l_scale * $l_pscale + 1;

if($n_start < $l_total){ echo " [" . $l_link1 . $n_start . $l_link2 . "Next Page</a>]"; }

 

if ($l_next <= ($l_total - $l_scale)){ echo " [" . $l_link1 . (floor($l_total/$l_scale) * $l_scale + 1) . $l_link2 . "Last</a>]"; }

echo "<br>Current Page : (" . (floor($l_start - 1) / $l_scale + 1) . "/" . round( $l_total / $l_scale ) . ")";

}

?>

</td></tr>

</table>

 

<? include ("footer.inc"); ?>

[Top]
No.
제목
작성자
작성일
조회
255저장되어 있는 이미지 파일을 어떨게 불러옵니까? hahaman님 도와주셔여
박수민
2000-07-31
6695
256┕>Re: 부담 팍팍!! ^^
hahaman
2000-08-01 13:59:17
7250
254[질문] esql작성중입니다. 다이나믹sql이 안되는군요.
이병기
2000-07-30
6504
259┕>Re: [질문] esql작성중입니다. 다이나믹sql이 안되는군요.
이병기
2000-08-03 11:21:05
7857
251blob 입력문(php)인데 에러가 납니다. 왜그런지 며칠째 봐도 모르겠습니다. 알켜주세요
박수민
2000-07-29
7501
252┕>Re: blob 입력문(php)인데 에러가 납니다. 왜그런지 며칠째 봐도 모르겠습니다. 알켜주세요
hahaman
2000-07-29 15:04:13
7746
253 ┕>Re: Re: blob 입력문(php)인데 에러가 납니다. 왜그런지 며칠째 봐도 모르겠습니다. 알켜주세요
박수민
2000-07-29 16:41:47
7255
248hahaman님의 mysql_data_seek 답변을 보았는데 좀더 알고싶어서..
이승봉
2000-07-27
7345
250┕>Re: seek 함수 구현에 관해서....
hahaman
2000-07-27 19:51:50
8978
243지발....도와주세염....흑흑흑 T.T
2000-07-26
7955
247┕>Re: 가능합니다.
hahaman
2000-07-27 11:21:22
8531
242decode가 있나요... ?
redsky
2000-07-26
8989
246┕>Re: 물론 있습니다.
hahaman
2000-07-27 11:02:36
8559
249 ┕>hahaman님 다시 부탁드립니다.............@^^@
redsky
2000-07-27 17:04:33
8781
257  ┕>Re: 음 decode문 그렇게 사용하....
hahaman
2000-08-01 14:01:48
8929
238Php,Informix DB connect가 안되는데요..^^;
katherine
2000-07-26
7759
239┕>Re: Php,Informix DB connect가 안되는데요..^^;
hahaman
2000-07-26 10:18:53
8542
241 ┕>Re: Re: Php,Informix DB connect가 안되는데요..^^;
katherine
2000-07-26 11:15:14
8291
244  ┕>Re: Re: Re: Php,Informix DB connect가 안되는데요..^^;
나그네
2000-07-26 22:08:33
8649
262   ┕>RE:Re: Re: Re: Re: Php,Informix DB connect가 안되는데요..^^;
김길수
2000-08-10 22:02:45
8585
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.026초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다