공공데이터 관련 질문 드립니다.
본문
이번에 제가 자원봉사센터 홈페이지를 무료로 제작을 해드렸습니다.
그런데 제가 하고 힢은 것은 현제 자원봉사정보를 좀 가져오려고 합니다. 그런데 만들기는 했는데 이상하게 시도 는 잘 됩니다. 그런데 2페이지로 넘어가면 다시 초기화가 되는 현상이 일어나서요 이건 어떻게 해야 하는 것인지 그리고 나머지 텝들도 적용을 하고 싶은데 어떻게 해야 할지 몰라서요 혹시 아시는 분 계실까요
https://www.data.go.kr/data/15077681/openapi.do
이걸 토대로 했구요
아래 코드는 제가 만든건데 작동이 안되는게 맞네요 이걸 정상적으로 돌아가게 하고 싶은데 잘 되지 않아서요
https://sgcil.org/page/page07-03.php 여기는 제가 만든 페이지 입니다.
자원봉사를 원하는 분들이 편하게 들어와서 검색하고 확인을 하고 신청이 용이 하게 하고 싶어서 해 본건데 생각보다 어렵네요 ㅠㅠ
<article class="search-form">
<form name="searchFrm" id="searchFrm" method="get" action="" onsubmit="search(); return false;">
<input type="hidden" name="pageIndex" value="" />
<h3 class="h3_bul3">원하는 조건을 선택하여 전국 자원봉사 정보를 조회 하실 수 있습니다.</h3>
<ul>
<li style="width: 100%;">
<dl>
<dt><label for="searchHopeArea1">봉사 지역</label></dt>
<dd>
<div class="row" style="margin: -5px;">
<div class="col col-6" style="padding: 5px;">
<select id='searchHopeArea1' onchange="get_code(this);" name="schSido" title="봉사지역 시/도 선택" style="width: 100%;">
<option value="">전체</option>
<option value="6110000" >서울특별시</option>
<option value="6260000" >부산광역시</option>
<option value="6270000" >대구광역시</option>
<option value="6280000" >인천광역시</option>
<option value="6290000" >광주광역시</option>
<option value="6300000" selected>대전광역시</option>
<option value="6310000" >울산광역시</option>
<option value="5690000" >세종특별자치시</option>
<option value="6410000" >경기도</option>
<option value="6420000" >강원도</option>
<option value="6430000" >충청북도</option>
<option value="6440000" >충청남도</option>
<option value="6450000" >전라북도</option>
<option value="6460000" >전라남도</option>
<option value="6470000" >경상북도</option>
<option value="6480000" >경상남도</option>
<option value="6500000" >제주특별자치도</option>
</select>
</div>
<div class="col col-6" style="padding: 5px;">
<label for="searchHopeArea1" class="d-none">구/군 선택</label>
<select id='searchHopeArea2' name="schSign1" title="봉사지역 구/군 선택" setVal="3650000" style="width: 100%;">
<option value="">선택</option>
</select>
</div>
</div>
</dd>
</dl>
</li>
<li style="width: 100%;">
<dl>
<dt><label for="searchHopeArea1">봉사 분야</label></dt>
<dd>
<div class="row" style="margin: -5px;">
<div class="col col-6" style="padding: 5px;">
<select id='searchHopeSrvc1' name="searchHopeSrvc1" title="봉사분야 대분류 선택" style="width: 100%;">
<option value="">전체</option>
<option value="0100">생활편의지원</option>
<option value="0200">주거환경</option>
<option value="0300">상담</option>
<option value="0400">교육</option>
<option value="0500">보건의료</option>
<option value="0600">농어촌 봉사</option>
<option value="0700">문화행사</option>
<option value="0800">환경보호</option>
<option value="0900">행정보조</option>
<option value="1000">안전.예방</option>
<option value="1100">공익.인권</option>
<option value="1200">재해ㆍ재난</option>
<option value="1300">국제협력.해외봉사</option>
<option value="1400">멘토링</option>
<option value="1500">기타</option>
<option value="1700">자원봉사교육</option>
<option value="1800">국제행사</option>
</select>
</div>
<div class="col col-6" style="padding: 5px;">
<label for="searchHopeArea1" class="d-none">봉사분야 하위분류 선택</label>
<select id='searchHopeSrvc2' name="searchHopeSrvc2" title="봉사지역 구/군 선택" setVal="3740000" style="width: 100%;">
<option value="">전체</option>
</select>
</div>
</div>
</dd>
</dl>
</li>
<li>
<dl>
<dt>봉사자 유형</dt>
<dd>
<p class="checkIn">
<input type="checkbox" id="typeCheck01" name="adultPosblAt" value="Y" />
<label for="typeCheck01">성인</label>
</p>
<p class="checkIn">
<input type="checkbox" id="typeCheck02" name="yngbgsPosblAt" value="Y" />
<label for="typeCheck02">청소년</label>
</p>
</dd>
</dl>
</li>
<li>
<dl>
<dt scope="row"><label for="volunteer_keyword">봉사 제목</label></dt>
<dd><input type="text" id="volunteer_keyword" name="keyword" maxlength="20" id="" value="" placeholder="" style="width: 100%;" /></dd>
</dl>
</li>
</ul>
<div class="btnArea">
<input type="submit" title="설정한 검색 옵션으로 자원봉사정보 조회" value="조회하기" id="" />
</div>
</form>
</article>
<?php
$ch = curl_init();
$url = 'http://openapi.1365.go.kr/openapi/service/rest/VolunteerPartcptnService/getVltrPartcptnItem'; /*URL*/
//http://openapi.1365.go.kr/openapi/service/rest/VolunteerPartcptnService/getVltrSearchWordList
$url='http://openapi.1365.go.kr/openapi/service/rest/VolunteerPartcptnService/getVltrSearchWordList';
$queryParams = '?' . urlencode('ServiceKey') . '=4U6WdTrEX4UGz7wp2NJEu7uLmfyVPLAYsUNa3OEJMSJaTRF7pAZfi1Uw3%2FgHMsB0C22DJyRxAOKCaNolt8l%2Blw%3D%3D'; /*Service Key*/
$queryParams .= '&' . urlencode('progrmRegistNo') . '=' . urlencode('1269076'); /**/
$queryParams .="progrmBgnde=&progrmEndde=&schSido={$schSido}&schSign1={$schSign1}&pageNo=$page";
curl_setopt($ch, CURLOPT_URL, $url . $queryParams);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($ch);
curl_close($ch);
$xml= simplexml_load_string( $response);
//echo json_encode( $xml->body->items);
?>
<div class="bbs_list_info">
<strong>전체 : <?php
echo $xml->body->totalCount;?></strong> (<span><?php
echo $xml->body->pageNo;?></span> / <?php
echo ceil( $xml->body->totalCount/$xml->body->numOfRows); ?> page)
</div>
<ul class="volunteer-list"><?php
$progrmSttusSe_set= array(
'1'=>'<span>모집대기</span>',
'2'=>'<span class="recruiting">모집중</span>',
'3'=>'<span>모집완료</span>',
);
foreach( $xml->body->items->item as $item) {
?><li>
<a href="<?=$item->url?>" target="_blank" title="이 모집공고 자세히 보기 - 새창으로 열기 ">
<div class="volunteer-list-title">
<strong class="volunteer-list-category">[<?=$item->srvcClCode?>]</strong>
<?=$item->progrmSj?>
(<?=$item->actBeginTm?>~<?=$item->actEndTm?>시)
</div>
<div class="volunteer-list-etc float-wrap">
<dl> <dt>모집기관</dt> <dd><?=$item->nanmmbyNm?></dd> </dl>
<dl> <dt>모집기간</dt> <dd><?=$item->noticeBgnde?> ~ <?=$item->noticeEndde?></dd> </dl>
<dl> <dt>봉사기간</dt> <dd><?=$item->progrmBgnde?> ~ <?=$item->progrmEndde?></dd> </dl>
</div>
<?=$progrmSttusSe_set[ (string)($item->progrmSttusSe)]?>
</a>
</li>
<?php } ?>
</ul>
<!-- 페이징 시작-->
<div class="paging"><?php
$page= $xml->body->pageNo;
$total_page= ceil( $xml->body->totalCount/$xml->body->numOfRows);
$xml->body->numOfRows;
echo get_paging( 10, $page, $total_page,'?');
?></div>
<!-- 페이징 끝 -->
<script>
function get_code( ethis){
var kind= ethis.value;
console.log( kind);
$.ajax({
type: "GET",
url: "<?=G5_THEME_URL?>/pages/inc/code.php",
//url: "./code.php",
data: {
"sidoCd": encodeURIComponent( kind)
},
dataType: "json",
cache: false,
async: false,
success: function( jdata) {
console.log( jdata);
var next_select= $( '#searchHopeArea2');
next_select.html('<option value="0" > 선택</otion>');
//if( jdata.error=='ok') {
for( jj=0; jj<jdata.addrGugunList.length; jj++) {
next_select.append($('<option></option>')
.attr('value', jdata.addrGugunList[jj].gugunCd)
//.attr( 'data-price',jdata.addrGugunList[jj].price)
.text(jdata.addrGugunList[jj].gugunNm));
}
//}
}
});
return false;
}
</script>
<script>
$(function() {
$("#searchHopeArea1").val("<?=$schSido?>").trigger('change');
$("#searchHopeArea2").val("<?=$schSign1?>");
$("#searchHopeSrvc1").val("<?=$searchHopeSrvc1?>");
});
</script>
!-->
답변 2
pagenation 에서 변수를 보내고 있지 않네요.
확인 해보세요.
실제 보내야 할 페이지...
현재 검색후 pagenation에서 보내는 페이지...
검색 이런게 2페이지에 초기화된다는말인가여?
값을 페이징 넘길때 get으로 같이넘겨줘서 처리해줘야함
페이징 부분 넘어갈때 변수값에 page, 지역, 등등 같이 넘기고
get으로 받아서 if로 유무검사해서 처리
답변을 작성하시기 전에 로그인 해주세요.