힘들다 php 넘 어려워 도와주세요 > 자유게시판

자유게시판

힘들다 php 넘 어려워 도와주세요 정보

힘들다 php 넘 어려워 도와주세요

본문

http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=76704&sca=&sfl=wr_subject&stx=%BA%CE%B5%BF%BB%EA&sop=and

페르소나님의 부동산스킨을 다운받아 설치 하였습니다.

지역검색 에서

전남 - 순천 - 토지

를 맞추면 에러가

게시판에는 위같이 입력되있는데...

에러내용

select distinct wr_parent from g4_write_state where ((INSTR(concat(wr_5, '전남')) and (INSTR(concat(wr_5, '순천시')) and (INSTR(concat(wr_5, '토지')) ) and wr_is_comment = '0' and (wr_num between '-3' and '9997')

1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') and (INSTR(concat(wr_5, '순천시')) and (INSTR(concat(wr_5, '토지')) ) an' at line 1

error file : /addang/bbs/board.php


스킨이 잘못되었나요?

아님 제 홈피에 문제가?

g4_zip는 위처럼 import 시켯습니다.

지역검색 내용도 다 나오고요, 헌데 결과 쪽에서 문제가?
--------------------------------------------------------------------------------------
다음은 훙이님이 답변해주신 내용입니다.

syntax에러네요...

select distinct wr_parent from g4_write_state where (*1*  (*2*  INSTR(*3* concat(*4* wr_5, '전남'*4*)  *3*) and (*5* INSTR(*6*  concat(*7*  wr_5, '순천시'  *7*)  *6*) and (*8*  INSTR(*9*  concat(*10*  wr_5, '토지'  *10*)  *9*)  *8*) and wr_is_comment = '0' and (*11*  wr_num between '-3' and '9997'  *11*)


남아있는게.... 1 하고 2 그리고 5번 괄호가 마무리가 안된듯 싶은데요...

g4_write_state where ((    <----

and (<--  INSTR(concat(wr_5, '순천시'

스킨내에서 한번 쿼리문 부분을 함 찾아보세요..

저도 스킨과 g4_zip를 설치해봤습니다. 동일한 증상이 있더군요...
이리저리 추적해본결과

config.list_select2.php에서

<td>+ 지역검색 :
<input type=hidden name=sfl value="concat(wr_5,wr_14)"> 
부분이 있습니다. 보시다 시피

value=concat(wr_5,wr_14)의 값을 가지고 있고

맨마지막 셀렉트 선택을 하게되면
onChangeKey()를 호출하게 됩니다. 그리고 전송을하게되죠
그러면 list.php파일을 읽어오게 되는데요
그과정에서
    $sql_search = get_sql_search($sca, $sfl, $stx, $sop);
부분을 호출하게 됩니다.

$sfl에는 concat(wr_5, wr_14)라는 값이 있고
$stx에는 지역(시) 지역(도) 분류
의 값이 들어가게 됩니다.

그러면 common.lib.php파일의 get_sql_search함수를 호출하게 되죠
그러면 그 과정에서 $tmp = explode(",", trim($search_field));
부분이 있습니다.

만약 정상동작하는 원래대로의 쿼리문이라면
select distinct wr_parent from g4_write_test where ((INSTR( --> concat(wr_5, wr_14)  <-- , '부산')) and (INSTR( --> concat(wr_5,wr_14) <-- , '남구')) and (INSTR(--> concat(wr_5, wr_14) <--, '토지')) ) and wr_is_comment = '0' and (wr_num between '-3' and '9997')

common.lib.php파일의 get_sql_search함수의 $tmp = explode(",", trim($search_field));
부분에서
concat(wr_5,wr_14) 를 --> , <-- 를 기준으로 분리해서 wr_14)가 잘리게 되고
쿼리문에는

concat(wr_5, 많이 들어가게 되는 것입니다.

일단 제가 추적한 부분은 여기까지 인데요. 페르소나님의 링크를 따라가면 정상동작하고 있으니 제가 헛짓 한것일수도 있습니다. 우선은 저도 이정도에서 다른분들의 도움을 받아야 할거 같군요.
-------------------------------------------------------------------------------------
다음 에러를 잡아주실 고수분은 안계신가요?

도와주세요
추천
0
  • 복사

댓글 2개

select distinct wr_parent from g4_write_state where
(
 ( INSTR ( concat ( wr_5, '전남' ) )  and <- 가로하나빠짐
 ( INSTR ( concat ( wr_5, '순천시' ) ) and <- 가로하나빠짐
 ( INSTR (concat (wr_5, '토지' ) )  <- 가로하나빠짐
)
and
 wr_is_comment = '0' and (wr_num between '-3' and '9997')

위 쿼리를 저러케 한줄씩 나눠노면 가로가 세개 빠졌군요
페르소나님소스의 어느부분을 수정해야 하나요?

---------------------------------------------------------------------
script language="javascript">
<!--//-- 스킨용 : 주소 셀렉트창 (대도시,구.군,여유필드]
var cat1_info = new Array, cat2_info = new Array;
var cat2_num = new Array;

cat1_info[1] = { serial:11, name:'서울' }
cat1_info[2] = { serial:21, name:'부산' }
cat1_info[3] = { serial:22, name:'대구' }
cat1_info[4] = { serial:23, name:'인천' }
cat1_info[5] = { serial:24, name:'광주' }
cat1_info[6] = { serial:25, name:'대전' }
cat1_info[7] = { serial:26, name:'울산' }
cat1_info[8] = { serial:41, name:'경기' }
cat1_info[9] = { serial:42, name:'강원' }
cat1_info[10] = { serial:43, name:'충북' }
cat1_info[11] = { serial:44, name:'충남' }
cat1_info[12] = { serial:45, name:'전북' }
cat1_info[13] = { serial:46, name:'전남' }
cat1_info[14] = { serial:47, name:'경북' }
cat1_info[15] = { serial:48, name:'경남' }
cat1_info[16] = { serial:49, name:'제주' }

<?
for ($i = 0; $i < 16; $i++) {
   
switch ($i) {
case (0) : $area_code = '11'; $area_name = '서울'; break;
case (1) : $area_code = '21' ; $area_name = '부산'; break;
case (2) : $area_code = '22' ; $area_name = '대구'; break;
case (3) : $area_code = '23' ; $area_name = '인천'; break;
case (4) : $area_code = '24' ; $area_name = '광주'; break;
case (5) : $area_code = '25' ; $area_name = '대전'; break;
case (6) : $area_code = '26' ; $area_name = '울산'; break;
case (7) : $area_code = '41' ; $area_name = '경기'; break;
case (8) : $area_code = '42' ; $area_name = '강원'; break;
case (9) : $area_code = '43' ; $area_name = '충북'; break;
case (10) : $area_code = '44' ; $area_name = '충남'; break;
case (11) : $area_code = '45' ; $area_name = '전북'; break;
case (12) : $area_code = '46' ; $area_name = '전남'; break;
case (13) : $area_code = '47' ; $area_name = '경북'; break;
case (14) : $area_code = '48' ; $area_name = '경남'; break;
case (15) : $area_code = '49' ; $area_name = '제주'; break;
}

    $query1 = "Select distinct(zp_gugun) From g4_zip Where zp_sido = '$area_name'";   
$req1 = sql_query($query1);

    if(!$req1) {
          exit;
    }

$cnt = mysql_num_rows($req1);
?>
cat2_num[<?echo($i+1);?>] = <?echo($cnt);?>;
cat2_info[<?echo($i+1);?>] = new Array;
<?
$j = 0;

while ($rs1 = mysql_fetch_array($req1)) {

$region_name = $rs1[0];
$region_name = trim($region_name);
?> 
 cat2_info[<?echo($i+1);?>][<?echo($j);?>] = { serial:<?echo $area_code; ?>, name:'<?echo($region_name);?>' };
 <?
$j++;

}  // while loop end

}  // for loop end
?>

function onChangeCat1( cat1 ){

    document.fsearch_area.region_name.options.length = cat2_num[cat1] + 1;
    document.fsearch_area.region_name.options[0] = new Option( '전지역', '', true, true );
document.fsearch_area.region_name.options[0].value = cat1_info[cat1].name;

    for( var i=0; i<cat2_num[cat1]; i++ ){
document.fsearch_area.region_name.options[i+1] = new Option( cat2_info[cat1][i].name, cat2_info[cat1][i].serial );
document.fsearch_area.region_name.options[i+1].value = cat1_info[cat1].name + " " + cat2_info[cat1][i].name;

if( cat2_info[cat1][i].serial == 1 ) {
document.fsearch_area.region_name.options[i+1].selected = true;
}
    }
}

//-- wr_3, wr_6 등 중복셀렉트가 가능하게 해주는 함수
//-- 수정작업시, 아래 함수와 함께 write.skin.php에 사용된 '여유필드(wr_?)이름과 셀렉트문'을 가져와 붙이면 바로적용가능
//-- 단, 반드시 게시물리스트(list.skin.php)에 여유필드값이 게시물에 주어져야함.
//-- 중복필드가 필요없는 경우 'document.fsearch_area.srch_type.value'삭제, 셀렉트문삭제, value값에서 영필드명삭제
function onChangeKey() {
document.fsearch_area.stx.value = document.fsearch_area.region_name.value + " " + document.fsearch_area.srch_type.value;
document.fsearch_area.submit();
}

//--> 
</script>

<table cellpadding=0 cellspacing=0 border=0>
<form name=fsearch_area method=get>
<input type=hidden name=bo_table value="<?=$bo_table?>">
<input type=hidden name=sca value="<?=$sca?>">
<tr>
    <td>+ 지역검색 :
<input type=hidden name=sfl value="concat(wr_5,wr_14)"> 
<select name=area_name onChange="onChangeCat1(document.fsearch_area.area_name.value)">
                <option value="" selected>1차 지역선택</option>
                <option value=1>서울특별시</option>
                <option value=2>부산광역시</option>
                <option value=3>대구광역시</option>
                <option value=4>인천광역시</option>
                <option value=5>광주광역시</option>
                <option value=6>대전광역시</option>
                <option value=7>울산광역시</option>
                <option value=8>경기도</option>
                <option value=9>강원도</option>
                <option value=10>충청북도</option>
                <option value=11>충청남도</option>
                <option value=12>전라북도</option>
                <option value=13>전라남도</option>
                <option value=14>경상북도</option>
                <option value=15>경상남도</option>
                <option value=16>제주도</option>
              </select>
              <select name=region_name>
                <option value="">2차 구.군선택</option>
              </select>

  <select name=srch_type onChange="onChangeKey()">
<option selected value=''>매물분류</option>
<option value='빌딩/건물'>빌딩/건물</option>
<option value='상가'>상가</option>
<option value='주택'>주택</option>
<option value='주상복합'>주상복합</option>
<option value='토지'>토지</option>
<option value='전답'>전답</option>
<option value='재개발'>재개발</option>
<option value='공장/창고'>공장/창고</option>
</select>
<input type=hidden name=sop value='and'>
<input type=hidden name=stx value=''>
    </td>
</tr>
</form>
</table>
<?
 if ($area_name != "") { $stx = ""; }
?>

-------------------------------------------------------------------

ㅜ.ㅜ
© SIRSOFT
현재 페이지 제일 처음으로