이게 문법적으로 맞나요? 값이 틀리게 나와요.

kimyh의 이미지

$queryString = "SELECT * FROM $accountsTable WHERE mamaga >='$keyfield1' and mamaga <='$keyfield2' ORDER BY date DESC";

impactbar의 이미지

kimyh wrote:
$queryString = "SELECT * FROM $accountsTable WHERE mamaga >='$keyfield1' and mamaga <='$keyfield2' ORDER BY date DESC";

$keyfield1 과 $keyfield2 에 들어가는 값들을 찍어보세요.

쿼리는 맞습니다.

kimyh의 이미지

가뭄에 단비같은 고마운 답변입니다.
$mamaga, $keyfield1, $keyfild2 를 echo 로 찌어보면 시험용
데이터가 모두15개인데 아래와 같이 찍힙니다.

45000,4000,12000
6500,4000,12000
34500,4000,12000
34500,4000,12000
34500,4000,12000
34500,4000,12000
56787,4000,12000
23000,4000,12000
56787,4000,12000
2554632,4000,12000
22345,4000,12000
22345,4000,12000
22345,4000,12000
123400,4000,12000
34500,4000,12000
여기서 맨 처음것이 $mamaga 이고
두번째 값이 $keyfield1 세번째값이 $keyfield2 값입니다.

그런데 실제 검색결과가 나오는 list 에는 4000에서 12000까지의 값이 6500이라는값 1개밖에 없는데 맨 첫째값인 45000만 찍힙니다.
그리고 또 조건에 맞는 mamaga가 5개이면 처음부터 5개 10이면 처음부터 10개 이런식으로 조건과 관계없이 값이 찍힙니다.

참고로 관련부분 소스를 올려드립니다.

조건문
-------

//조건에 따른 퀘리문 구성루틴
if($by == 'search'){

    if(($keyfield1) and ($keyfield2)){  ------->keyfield1, keyfield2 값이 있으면..

//$mamaga를 구하는 루틴 -------------------
   $query = "select * from $accountsTable where id='$idi' ORDER BY date DESC";  -----------------------> id값은 앞에서 가저옴
   $result = mysql_query($query);
   $total = mysql_num_rows($result);
   for($i=0; $i<=$total-1; $i++) {  ---------->데이터 갯수만끔 돌아라...
      $row  =  mysql_fetch_array($result);
   $mamaga = $row[mamaga];
//-----------------------------------------

	$queryString = "SELECT * FROM $accountsTable WHERE mamaga>=$keyfield1 and mamaga<=$keyfield2 ORDER BY date DESC";   --------------->조건에 맞는 mamaga만 뽑아내라....
        $pageMent = "by=search&keyfield1=$keyfield1&keyfield2=$keyfield2&mode=$mode"; --------------------->페이지 돌릴때 써먹을라고..

  echo"$mamaga,$keyfield1,$keyfield2<br>"; ------>확인차 찍어봐라..
    }else if
생략~~~~

자바 스크립트문
------------------
<script language="JavaScript"> 
<!-- 
function searchGo (form) { 
      if (!form.keyfield1.value) { 
         alert("낮은가격을 선택하세요!"); 
         form.keyfield1.focus(); 
         return; 
      } 
      if (!form.keyfield2.value) { 
         alert("높은가격을 선택하세요!"); 
         form.keyfield2.focus(); 
         return; 
      } 

    form.submit(); 
}

//-->

검색 요청문
-------------
//--------------- \는 코딩에 필요한것임 --------------
   <form name=form method=\"post\" action=\"./listapart.$PHP\">
   <input type=hidden name=by value=\"search\">	
   아파트 가격   <select name=\"keyfield1\">
   <option value=\"\">------ 
   <option value=\"4000\">4000 
   <option value=\"5000\">5000 
   <option value=\"7000\">7000 
   <option value=\"9000\">9000
   <option value=\"10000\">10000
   <option value=\"12000\">12000
   <option value=\"15000\">15000
   <option value=\"20000\">20000
   <option value=\"25000\">25000
   <option value=\"30000\">30000
   <option value=\"35000\">35000
   <option value=\"40000\">40000
   <option value=\"50000\">50000
   <option value=\"60000\">60000
   </select>만원 ~ 
   <select name=\"keyfield2\">
   <option value=\"\">------
   <option value=\"5000\">5000 
   <option value=\"6000\">6000 
   <option value=\"7000\">7000
   <option value=\"9000\">9000
   <option value=\"10000\">10000
   <option value=\"12000\">12000
   <option value=\"15000\">15000
   <option value=\"20000\">20000
   <option value=\"25000\">25000
   <option value=\"30000\">30000
   <option value=\"35000\">35000
   <option value=\"40000\">40000
   <option value=\"50000\">50000
   <option value=\"60000\">60000
   <option value=\"200000\">200000
   </select>만원
   <input type=\"button\" value=\"검색\" onClick=\"searchGo(this.form)\">
   </form>

이상입니다.
살펴주세요 오늘이 이 검색문제로 3일째입니다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

nachnine의 이미지

혹시 varchar 인데 number 로 비교하는경우가 아닌지요?

to_number(managa)해보세요.

impactbar의 이미지

$query = "select * from $accountsTable where id='$idi' ORDER BY date DESC";  -----------------------> id값은 앞에서 가저옴 
   $result = mysql_query($query); 
   $total = mysql_num_rows($result); 
   for($i=0; $i<=$total-1; $i++) {  

위 부분이 좀 이상하군요
id 가 $idi 인것을 가지고 아래 for문을 돌리는데

$queryString = "SELECT * FROM $accountsTable WHERE mamaga>=$keyfield1 and mamaga<=$keyfield2 ORDER BY date DESC";   --------------->조건에 맞는 mamaga만 뽑아내라.... 

가 쓰이는 부분이 없군요.

제가 임의로 필드를 만들어서 테스트를 해보았습니다.
| Field | Type | Null | PRI | NULL | auto_increment |
| mamaga | int(10) | YES | | NULL | |
| keyfield1 | int(10) | YES | | NULL | |
| keyfield2 | int(10) | YES | | NULL | |

45000,4000,12000
6500,4000,12000
34500,4000,12000
34500,4000,12000
34500,4000,12000
34500,4000,12000
56787,4000,12000
23000,4000,12000
56787,4000,12000
2554632,4000,12000
22345,4000,12000
22345,4000,12000
22345,4000,12000
123400,4000,12000
34500,4000,12000

where 조건은 4000 이상 12000 이하 입니다.

올려주신 코드로 검색하면 위와 같이 나옵니다.

조건을 주었을때 정확하게 출력되게 할려면

       $query = "select * from $listTable"; <-- 제가 수정한 부분입니다. 변수이름이 바꼈죠.
        if($by == 'search'){

                if(($keyfield1) and ($keyfield2)){
                        $query = "SELECT * FROM $listTable WHERE  mamaga>=$keyfield1 and mamaga<=$keyfield2 "; <------------ $querystring 을 $query 로 바꾸고 for문 밖으로 빼세요.
                        echo $query . "<br>";
                        $result = mysql_query($query);
                        $total = mysql_num_rows($result);
                        for($i=0; $i<=$total-1; $i++) {

                                $row  =  mysql_fetch_array($result);

그럼 정확하게 하나의 값만 나옵니다. 그럼.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.