얼마전 외부문서를 불러와 페이징하는 질문을 드렸었는데요...
일차적으로 해결은 하였습니다.
헌데 통합검색 결과값에서도 페이징 처리가 되게 하고 싶은데.... 잘 처리가 안되는군요.
기본 통합검색 스킨의 head.html 파일에서 상단에 제가 나태내고 싶은 코드를 집어 넣었는데요...
html 이라서 그런지 php코드가 제대로 인식하는지 모르겠기도 하고...
테스트 http://pumpia.com 샘플 검색어 : "부스터" 검색해 보시면 고수님들은 금방 아실 수 있을 것 같아요.
#외부페이지
파일 : company_search.php
DB Table : company (업체리스트 )
항목은....
1.프리미엄서치
2.사이트 (업체리스트) --- 페이징 처리
3.xe 검색결과
코드를 보시고 확인 부탁드립니다.
---------------------------------------------------------------------------------------------------------------------------------------
1.프리미엄서치 코드
<div id="title">프리미엄서치</div>
<br>
<?
$keyword = Context::get('is_keyword');
include "db_config.php";
$keyword=$is_keyword;
$Sql="select * from xe_documents where tags like '%$keyword%' and module_srl=1627 and category_srl=1637";
$rResult = mysql_query($Sql);
while($R=mysql_fetch_array($rResult))
{
$data=@mysql_fetch_array(mysql_query("select * from xe_files where upload_target_srl=$R[document_srl]"));
$data2=@mysql_fetch_array(mysql_query("select * from xe_document_extra_vars where document_srl=$R[document_srl] and eid='url_link'"));
?><a href="<?=$data2[value]?>" target=_blank><img src="<?=$data[uploaded_filename]?>" ></a>
<?
} ?>
<br>
<?
$keyword = Context::get('is_keyword');
include "db_config.php";
$keyword=$is_keyword;
$Sql="select * from xe_documents where tags like '%$keyword%' and module_srl=1627 and category_srl=1637";
$rResult = mysql_query($Sql);
while($R=mysql_fetch_array($rResult))
{
$data=@mysql_fetch_array(mysql_query("select * from xe_files where upload_target_srl=$R[document_srl]"));
$data2=@mysql_fetch_array(mysql_query("select * from xe_document_extra_vars where document_srl=$R[document_srl] and eid='url_link'"));
?><a href="<?=$data2[value]?>" target=_blank><img src="<?=$data[uploaded_filename]?>" ></a>
<?
} ?>
2. 사이트 코드
<div id="title" style="padding: 10px;">사이트</div>
<?
// 3.디비와 연결
$connect = mysql_connect("localhost","test","test") or die(mysql_error());
// 4.데이터베이스 선택
mysql_select_db("test") or die(mysql_error());
// 여기서 부터 페이징 관련
// 5. 현재 페이지 변수정리
if($_GET[page] && $_GET[page] > 0){
// 현재 페이지 값이 존재하고 0 보다 크면 그대로 사용
$page = $_GET[page];
}else{
// 그 외의 경우는 현재 페이지를 1로 설정
$page = 1;
}
// 6.페이지 기본 설정
// 한 페이지에 보일 글 수
$page_row = 5;
// 한줄에 보여질 페이지 수
$page_scale = 5;
// 7. 전체 글 수 구하기
$query_total="select count(*) as cnt from company where (company like '%$keyword%' or tag like '%$keyword%' or address_doro like '%$keyword%' or telephone like '%$keyword%' or homepage like '%$keyword%') and display='yes'";
$result_total = mysql_query($query_total, $connect);
$data_total = mysql_fetch_array($result_total);
$total_count = $data_total[cnt];
// 8. 전체 페이지 계산
$total_page = ceil($total_count / $page_row);
// 9. 시작 열을 구함
$from_record = ($page - 1) * $page_row;
// 10. 페이징을 출력할 변수 초기화
$paging_str = "";
// 11. 처음 페이지 링크 만들기
if ($page > 1) {
$paging_str .= "<a href='".$_SERVER['PHP_SELF']."&page=1'>처음</a>";
}
// 12. 페이징에 표시될 시작 페이지 구하기
$start_page = ( (ceil( $page / $page_scale ) - 1) * $page_scale ) + 1;
// 13. 페이징에 표시될 마지막 페이지 구하기
$end_page = $start_page + $page_scale - 1;
if ($end_page >= $total_page) $end_page = $total_page;
// 14. 이전 페이징 영역으로 가는 링크 만들기
if ($start_page > 1){
$paging_str .= " <a href='".$_SERVER['PHP_SELF']."&page=".($start_page - 1)."'>이전</a>";
}
// 15. 페이지들 출력 부분 링크 만들기
if ($total_page > 1) {
for ($i=$start_page;$i<=$end_page;$i++) {
// 현재 페이지가 아니면 링크 걸기
if ($page != $i){
$paging_str .= " <a href='".$_SERVER['PHP_SELF']."&page=".$i."'><span>".$i."</span></a>";
// 현재페이지면 굵게 표시하기
}else{
$paging_str .= " <b>".$i."</b> ";
}
}
}
// 16. 다음 페이징 영역으로 가는 링크 만들기
if ($total_page > $end_page){
$paging_str .= " <a href='".$_SERVER['PHP_SELF']."&page=".($end_page + 1)."'>다음</a>";
}
// 17. 마지막 페이지 링크 만들기
if ($page < $total_page) {
$paging_str .= " <a href='".$_SERVER['PHP_SELF']."&page=".$total_page."'>맨끝</a>";
}
// 여기까지 페이징
// 18.쿼리문 작성
$query = "select * from company where (company like '%$keyword%' or tag like '%$keyword%' or address_doro like '%$keyword%' or telephone like '%$keyword%' or homepage like '%$keyword%') and display='yes' LIMIT " .$from_record.", ".$page_row;
// 19.쿼리문 적용하여 $result 에 대입
$result = mysql_query($query, $connect);
// 20.데이터 갯수 체크를 위한 변수 설정
$i = 0;
// 21.데이터가 있을 동안 반복해서 값을 한 줄씩 읽기
while($R = mysql_fetch_array($result)){
?>
<ul id="company">
<li class="name"><a href="http://<?=$R[homepage]?>" target=_blank><?=$R[company]?></a></li>
<li><?=$R[contents]?></li>
<!--<li><?=$R[address]?></li> -->
<li><?=$R[address_doro]?> <?=$R[address_detail]?></li>
<!-- <li><?=$R[tag]?></li> -->
<!-- <li><a href="http://<?=$R[homepage]?>" target=_blank><?=$R[homepage]?></a> </li> -->
<font color=#339933>
<li>
<TABLE>
<TR>
<TD width=200><a href="http://<?=$R[homepage]?>" target=_blank><?=$R[homepage]?></a></TD>
<TD width=200><b>T</b> : <?=$R[telephone]?> </TD>
</TR>
</TABLE>
</li>
</font>
</ul>
<?
// 22.데이터 갯수 체크를 위한 변수를 1 증가시킴
$i++;
}
// 23.데이터가 하나도 없으면
if($i == 0){
?>
<tr>
<td height="50" align="center" valign="middle" colspan="5" style="border:1px #CCCCCC solid;">자료가 하나도 없습니다.</td>
</tr>
<?
}
// 24. 페이징 출력
if($paging_str){
?>
<tr>
<table align="center">
<td height="30" align="center" valign="middle" colspan="15" style="border:1px #CCCCCC solid;"><?=$paging_str?></td>
</tr>
</table>
<?
}
// 25.디비 닫기
mysql_close($connect);
?>
<style>
#title{
font-family: 'Nanum Gothic', sans-serif;
font:15px "나눔고딕",'Nanum Gothic',sans-serif;
font-weight:600;
}
#company {
width:95%;
font-size: 13px;
color:#000;
list-style: none;
text-align: left;
}
#company li {
padding:0px;
margin:0px;
}
.name {
font-weight: 700;
}
</style>
<div id="spot">
<form action="{getUrl()}" method="get" class="search" id="fo_is">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="act" value="IS" />
<input type="hidden" name="where" value="{$where}" />
<input type="hidden" name="search_target" value="title_content" />
<input type="hidden" name="error_return_url" value="" />
<input name="is_keyword" type="text" class="inputText" value="{htmlspecialchars($is_keyword)}"/>
<input type="submit" value="{$lang->cmd_search}" class="btn" />
</form>
</div>
<ul class="localNavigation">
<li <!--@if(!$where)-->class="on"<!--@end-->><a href="{getUrl('where','','page','','division','')}">{$lang->integration_search}</a></li>
<li <!--@if($where=='product')-->class="on"<!--@end-->><a href="{getUrl('where','product','page',1,'division','')}">상품</a></li>
<li <!--@if($where=='document')-->class="on"<!--@end-->><a href="{getUrl('where','document','page',1,'division','')}">게시물</a></li>
</ul>
<!--@end-->
<?
// 3.디비와 연결
$connect = mysql_connect("localhost","test","test") or die(mysql_error());
// 4.데이터베이스 선택
mysql_select_db("test") or die(mysql_error());
// 여기서 부터 페이징 관련
// 5. 현재 페이지 변수정리
if($_GET[page] && $_GET[page] > 0){
// 현재 페이지 값이 존재하고 0 보다 크면 그대로 사용
$page = $_GET[page];
}else{
// 그 외의 경우는 현재 페이지를 1로 설정
$page = 1;
}
// 6.페이지 기본 설정
// 한 페이지에 보일 글 수
$page_row = 5;
// 한줄에 보여질 페이지 수
$page_scale = 5;
// 7. 전체 글 수 구하기
$query_total="select count(*) as cnt from company where (company like '%$keyword%' or tag like '%$keyword%' or address_doro like '%$keyword%' or telephone like '%$keyword%' or homepage like '%$keyword%') and display='yes'";
$result_total = mysql_query($query_total, $connect);
$data_total = mysql_fetch_array($result_total);
$total_count = $data_total[cnt];
// 8. 전체 페이지 계산
$total_page = ceil($total_count / $page_row);
// 9. 시작 열을 구함
$from_record = ($page - 1) * $page_row;
// 10. 페이징을 출력할 변수 초기화
$paging_str = "";
// 11. 처음 페이지 링크 만들기
if ($page > 1) {
$paging_str .= "<a href='".$_SERVER['PHP_SELF']."&page=1'>처음</a>";
}
// 12. 페이징에 표시될 시작 페이지 구하기
$start_page = ( (ceil( $page / $page_scale ) - 1) * $page_scale ) + 1;
// 13. 페이징에 표시될 마지막 페이지 구하기
$end_page = $start_page + $page_scale - 1;
if ($end_page >= $total_page) $end_page = $total_page;
// 14. 이전 페이징 영역으로 가는 링크 만들기
if ($start_page > 1){
$paging_str .= " <a href='".$_SERVER['PHP_SELF']."&page=".($start_page - 1)."'>이전</a>";
}
// 15. 페이지들 출력 부분 링크 만들기
if ($total_page > 1) {
for ($i=$start_page;$i<=$end_page;$i++) {
// 현재 페이지가 아니면 링크 걸기
if ($page != $i){
$paging_str .= " <a href='".$_SERVER['PHP_SELF']."&page=".$i."'><span>".$i."</span></a>";
// 현재페이지면 굵게 표시하기
}else{
$paging_str .= " <b>".$i."</b> ";
}
}
}
// 16. 다음 페이징 영역으로 가는 링크 만들기
if ($total_page > $end_page){
$paging_str .= " <a href='".$_SERVER['PHP_SELF']."&page=".($end_page + 1)."'>다음</a>";
}
// 17. 마지막 페이지 링크 만들기
if ($page < $total_page) {
$paging_str .= " <a href='".$_SERVER['PHP_SELF']."&page=".$total_page."'>맨끝</a>";
}
// 여기까지 페이징
// 18.쿼리문 작성
$query = "select * from company where (company like '%$keyword%' or tag like '%$keyword%' or address_doro like '%$keyword%' or telephone like '%$keyword%' or homepage like '%$keyword%') and display='yes' LIMIT " .$from_record.", ".$page_row;
// 19.쿼리문 적용하여 $result 에 대입
$result = mysql_query($query, $connect);
// 20.데이터 갯수 체크를 위한 변수 설정
$i = 0;
// 21.데이터가 있을 동안 반복해서 값을 한 줄씩 읽기
while($R = mysql_fetch_array($result)){
?>
<ul id="company">
<li class="name"><a href="http://<?=$R[homepage]?>" target=_blank><?=$R[company]?></a></li>
<li><?=$R[contents]?></li>
<!--<li><?=$R[address]?></li> -->
<li><?=$R[address_doro]?> <?=$R[address_detail]?></li>
<!-- <li><?=$R[tag]?></li> -->
<!-- <li><a href="http://<?=$R[homepage]?>" target=_blank><?=$R[homepage]?></a> </li> -->
<font color=#339933>
<li>
<TABLE>
<TR>
<TD width=200><a href="http://<?=$R[homepage]?>" target=_blank><?=$R[homepage]?></a></TD>
<TD width=200><b>T</b> : <?=$R[telephone]?> </TD>
</TR>
</TABLE>
</li>
</font>
</ul>
<?
// 22.데이터 갯수 체크를 위한 변수를 1 증가시킴
$i++;
}
// 23.데이터가 하나도 없으면
if($i == 0){
?>
<tr>
<td height="50" align="center" valign="middle" colspan="5" style="border:1px #CCCCCC solid;">자료가 하나도 없습니다.</td>
</tr>
<?
}
// 24. 페이징 출력
if($paging_str){
?>
<tr>
<table align="center">
<td height="30" align="center" valign="middle" colspan="15" style="border:1px #CCCCCC solid;"><?=$paging_str?></td>
</tr>
</table>
<?
}
// 25.디비 닫기
mysql_close($connect);
?>
<style>
#title{
font-family: 'Nanum Gothic', sans-serif;
font:15px "나눔고딕",'Nanum Gothic',sans-serif;
font-weight:600;
}
#company {
width:95%;
font-size: 13px;
color:#000;
list-style: none;
text-align: left;
}
#company li {
padding:0px;
margin:0px;
}
.name {
font-weight: 700;
}
</style>
<div id="spot">
<form action="{getUrl()}" method="get" class="search" id="fo_is">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="act" value="IS" />
<input type="hidden" name="where" value="{$where}" />
<input type="hidden" name="search_target" value="title_content" />
<input type="hidden" name="error_return_url" value="" />
<input name="is_keyword" type="text" class="inputText" value="{htmlspecialchars($is_keyword)}"/>
<input type="submit" value="{$lang->cmd_search}" class="btn" />
</form>
</div>
<ul class="localNavigation">
<li <!--@if(!$where)-->class="on"<!--@end-->><a href="{getUrl('where','','page','','division','')}">{$lang->integration_search}</a></li>
<li <!--@if($where=='product')-->class="on"<!--@end-->><a href="{getUrl('where','product','page',1,'division','')}">상품</a></li>
<li <!--@if($where=='document')-->class="on"<!--@end-->><a href="{getUrl('where','document','page',1,'division','')}">게시물</a></li>
</ul>
<!--@end-->
3. 풀 소스
header.html
비누남어
Lv. 3
댓글 0