가격대별 조건검색 소스 좀 봐 주세요.
글쓴이: kimyh / 작성시간: 토, 2003/11/01 - 7:00오후
아래 소스는 아파트 가격대별 조건검색입니다.
에러메세자도 없고 검색버튼이 작동을 않하는데 원인을 못찾고 있습니다.
살펴 주시면 감사하겠습니다.
조건문;
if($by == 'search'){ $encodedKey = urlencode($key); if($mamaga >= '$keyfield1' and $mamaga <= '$keyfield2'){ $queryString = "SELECT * FROM $accountsTable WHERE mamaga LIKE '%$key%' ORDER BY date DESC"; $pageMent = "by=search&keyfield1=$keyfield1&$keyfield2=$keyfield2=$encodedKey&mode=$mode"; }else if($keyfield == 'id'){ $queryString = "SELECT * FROM $accountsTable WHERE id LIKE '%$key%' ORDER BY date DESC"; $pageMent = "by=search&keyfield=$keyfield&key=$encodedKey&mode=$mode"; 생략..... -------------------- 자바 스크립트 부분 <script language="JavaScript"> <!-- function searchGo (form) { if (!form.keyfield.value) { alert("검색위치를 선택하세요!"); form.keyfield.focus(); return; } if (!form.key.value) { alert("검색어를 입력하세요!"); form.key.focus(); return; } form.submit(); } //--> </script> -------------------- 검색문; <form name=form method=\"post\" action=\"./listapart.$PHP\"> <input type=hidden name=by value=\"search\"> 아파트 가격 <select mamaga=\"keyfield1\"> <option>------ <option>7000 <option>9000 <option>10000 <option>12000 <option>15000 <option>20000</select>만원 ~ <select mamaga=\"keyfield2\"> <option>------ <option>7000 <option>9000 <option>10000 <option>12000 <option>15000 <option>20000</select>만원 <input type=\"button\" value=\"검색\" onClick=\"searchGo(this.form)\"> </form>
Forums:
[code:1]<form name=form method=\"
<form name=form method=\"post\" action=\"./listapart.$PHP\">
이부분이 수상하네요. 기본적으로 DHTML에서는 <FORM>을 가리키는 form이란 Object가 있습니다. <FORM>의 이름을 form에서 다른걸로 바꿔보시죠.
흠... 약간 문제가 크군요...
일단... 많은 부분에서 문제가 보입니다.. php 코드 부분은 urlencode가 그곳에 왜 들어갔는지 잘 모르겠고...
form에서 page로 submit 할때 넘어가는 정보들은 name과 value입니다.
mamaga라는 attribute가 input 등의 태그에 존재하지 않음에도 써주셨네요..
mamaga라는 attribute에 name 에 들어갈것을 적어 주셨기에 form을 통해서 접근하려 할때 문제가 생깁니다.
그래서 물론 form.keyfield.value 라는 문장은 틀리게 됩니다.
일단 form 에서 .으로 가져오는 것들은 all 라는 collection에서 가져 오는것과 같습니다. form.all['keyfield'] 과 같다는 소리인대. 여기서 대괄호 안에 들어와야 하는것은 name 혹은 id 입니다. 게다가 keyfield 이라는것은 존재하질 않습니다!
코드를 보시면 keyfield1과 keyfield2가 있을뿐 keyfield와 key는 존재하지 않습니다.
2가지 문제를 다 해결하고 나면, 또 문제가 있지요.
option에 value가 없습니다.
option은 선택했을때 value값을 select에 넘겨주게 됩니다.
kimyh님의 코드에선 value가 아예 존재하지 않고 option의 innerText만 존재하고 있습니다. 이렇게 되면 select 태그에서 리스트에 보이긴 하지만 선택을 해도 select의 value는 없습니다.
그래서 작성해놓은 if문이 어떤경우에라도 통과할수 없게 되죠.
!form.keyfield1.value 가 무조건 true가 나오게 되는겁니다.
그래서 무조건 alert를 한번 뿌린후에
focus를 옮겨야 하는대 여기서 또 에러가 발생하죠.
keyfield가 없는겁니다. 이건 다시 keyfield1으로 바꿔 주셔야 겠죠.
마찬가지로 아래쪽의 key 또한 keyfield2로 바꿔 주셔야 겠죠.
그리고 그 줄에 있는 는 설마 정말 써주신건 아니겠죠.
는 자바스크립에는 존재하지 않는 용법입니다. 에러를 발생할수 밖에요..
그다음에 return이 나와 버리기 때문에 이 if문은 절때 통과할수 없이 계속 걸리겠죠.
option의 value를 넣어주세요.
이런식으로 php 소스코드는 별로 고치지 않고 일단 자바스크립과 html만 고치자면.
이렇게 됩니다. 하지만 php코드를 보니 이렇게 해도 php에서 form값을 넘겨받는대 문제가 생기겠군요.
PHP코드에서 form에서 넘겨받은 값을 일반 변수를 쓰듯이 쓰고 계신대 저럴경우 php.ini의 설정(어떤 설정인지는 지금 잘 기억이 안나는대 :oops: )이 바뀌게 되면 코드가 돌아가지 않게 됩니다.
일단 제가 권장하는 것은 $_POST 혹은 $_GET을 사용하시라는 것입니다.
php의 코드를 보게 되면 $key라는 것을 쓰고 계시는대 이것이 만약 위에서 정의된 어떤 것이 아닌 자바스크립트 안에서 쓰이던 form아래의 key라는 것의 값이 넘어오시길 바랬다면 물론 안넘어 오겠죠.-_-; keyfield1과 keyfield2 밖에 없으니깐-_-
또 form에서 name 대신 쓰신 mamaga라는 것을
넘어오실것을 기대하면서 $mamaga로 그냥 쓰고 계신듯 합니다.
이 코드에서 php로 넘어가는 정보는 hiddenform인 by와
keyfield1,keyfield2 이렇게 3가지가 넘어 갑니다.
php 코드를 보시면 이 3가지 외에 다른 넘어올것을 기대 하시는건 모두 안넘어 옵니다...
$mamaga가 안넘어 오기에 keyfield1과 keyfield2를 비교하는것에도 문제가 있죠 물론-_-;
이쯤되면 잘못된 부분이 보이실꺼라 믿고-_-; 이만...
새 생각 :)
whatisid님이 글을 남기셨군요 - _-;;그부분에도 문제가
whatisid님이 글을 남기셨군요 - _-;;
그부분에도 문제가 물론 있습니다. name=form 이라고 하면 문제가 될 소지가 다분합니다. 하지만 name이 form이라는 이름이 안될 이유는 없죠
일단 문제의 소지를 피하기 위해 최소한 "form" 이라고 스트링 처리는 해주셔야 겠죠 그리고 그줄에 php의 확장자에 $가 붙은것도 의도하신것은 아니겠죠-_-;;
새 생각 :)
감사합니다.정말 상세하고 자상하신 답변 정말로 감사 합니다.사실
감사합니다.
정말 상세하고 자상하신 답변 정말로 감사 합니다.
사실 php에 입문한지 얼마 않되어 스스로 소스를 코딩할것은 엄두도 못내고
겨우 흔히 돌아다니는 게시판 소스를 구해다가 부동산 매물등록 프로그램을 만들고 있는데 이게 고생이 말이 아니군요.
하나 하나 개인지도 하듯 지적해주신 자상한 배려 참으로 감사하고
하나 하나 다시 추적을 해서 알려주신대로 열심이 해보겠습니다.
다시한번 감사드립니다..
살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.
댓글 달기