테스트 사이트 - 개발 중인 베타 버전입니다

검색 질문 입니다 채택완료

웹프리죤 10년 전 조회 4,032

현재는 선택한 값과 동일한 데이터만 검색 출력이 되는데요

원하는것은 예를들어 "3년이상" 을 선택하고 검색을 하면 그 위에 존재하는 값도 출력이 되도록

하고 싶습니다.

 

"3년이상"을 선택하고 검색을 하면

5년이상

7년이상

10년이상

.

.

.

으로 등록된 값은 다 나오는것이죠..

 

</p><p><select name="wr_3" id="wr_3" style="padding:3px; border:1px solid #ccc"></p><p>        </p><p><span class="Apple-tab-span" style="white-space:pre">		</span><option value="">경력</option></p><p><span class="Apple-tab-span" style="white-space:pre">		</span><option value="1년이상" <?if ($wr_3 == '1년이상') echo "selected" ?>>1년이상</option></p><p><span class="Apple-tab-span" style="white-space:pre">		</span><option value="3년이상" <?if ($wr_3 == '3년이상') echo "selected" ?>>3년이상</option></p><p><span class="Apple-tab-span" style="white-space:pre">		</span><option value="5년이상" <?if ($wr_3 == '5년이상') echo "selected" ?>>5년이상</option></p><p><span class="Apple-tab-span" style="white-space:pre">		</span><option value="7년이상" <?if ($wr_3 == '7년이상') echo "selected" ?>>7년이상</option></p><p><span class="Apple-tab-span" style="white-space:pre">		</span><option value="10년이상" <?if ($wr_3 == '10년이상') echo "selected" ?>>10년이상</option></p><p><span class="Apple-tab-span" style="white-space:pre">		</span><option value="12년이상" <?if ($wr_3 == '12년이상') echo "selected" ?>>12년이상</option></p><p><span class="Apple-tab-span" style="white-space:pre">		</span><option value="15년이상" <?if ($wr_3 == '15년이상') echo "selected" ?>>15년이상</option></p><p><span class="Apple-tab-span" style="white-space:pre">		</span><option value="17년이상" <?if ($wr_3 == '17년이상') echo "selected" ?>>17년이상</option></p><p><span class="Apple-tab-span" style="white-space:pre">		</span><option value="20년이상" <?if ($wr_3 == '20년이상') echo "selected" ?>>20년이상</option></p><p><span class="Apple-tab-span" style="white-space:pre">		</span><option value="25년이상" <?if ($wr_3 == '25년이상') echo "selected" ?>>25년이상</option></p><p><span class="Apple-tab-span" style="white-space:pre">		</span><option value="30년이상" <?if ($wr_3 == '30년이상') echo "selected" ?>>30년이상</option></p><p>        </p><p>    </select> </p><p>

 

아래 출력 함수를 적용해봐도 여전히 선택된 값만 출력이 되어서 재질문 올립니다.

어디가 잘못되었을까요..

 

</p><p>// 추가 및 변경 함수 시작</p><p>$arr_search = array();</p><p>for($j = 1; $j < 11; $j++){</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>if($_GET["wr_".$j] && strlen($_GET["wr_".$j]) > 0){</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>$qstr .= "&wr_".$j."=".urlencode($_GET["wr_".$j]);</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>}</p><p>}</p><p> </p><p>// 검색 구문을 얻는다.</p><p>//function get_sql_search($search_ca_name, $search_field, $search_text, $search_operator=false)</p><p>function get_sql_search2($search_ca_name, $search_field, $search_text, $search_operator='and',$search_arr='')</p><p>{</p><p>    global $g5;</p><p> </p><p>    $str = "";</p><p><span class="Apple-tab-span" style="white-space:pre">		</span></p><p>    if ($search_ca_name)</p><p>        $str = " ca_name = '$search_ca_name' ";</p><p> </p><p>    $search_text = trim($search_text);</p><p> </p><p>    if (!$search_text && !$search_arr)</p><p>        return $str;</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>if(count($search_arr[name]) > 0){</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>$se_flag = 0;</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>for($j = 0; $j < count($search_arr[name]); $j++){</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>//print_r2($search_arr);</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>if(is_array($search_arr[val][$j])){</p><p> </p><p><span class="Apple-tab-span" style="white-space:pre">					</span>$str2 = "";</p><p> </p><p><span class="Apple-tab-span" style="white-space:pre">					</span>for($x = 0; $x < count($search_arr[val][$j]);$x++){</p><p><span class="Apple-tab-span" style="white-space:pre">						</span>$str2 = append_sql($str2, " or ", " {$search_arr[name][$j]} like '%{$search_arr[val][$j][$x]}%' ");</p><p><span class="Apple-tab-span" style="white-space:pre">					</span>}</p><p><span class="Apple-tab-span" style="white-space:pre">					</span>$str2 = " (".$str2.") ";</p><p><span class="Apple-tab-span" style="white-space:pre">					</span>$str = append_sql($str, " and", $str2);</p><p> </p><p> </p><p><span class="Apple-tab-span" style="white-space:pre">				</span>}else if(strlen($search_arr[val][$j]) > 0 && $search_arr[val][$j] ){</p><p><span class="Apple-tab-span" style="white-space:pre">					</span>$str = append_sql($str, " and ", " {$search_arr[name][$j]}  = '{$search_arr[val][$j]}' ");</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>}</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>}</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>}</p><p><span class="Apple-tab-span" style="white-space:pre">		</span></p><p>    // 쿼리의 속도를 높이기 위하여 ( ) 는 최소화 한다.</p><p>    $op1 = "";</p><p> </p><p>    // 검색어를 구분자로 나눈다. 여기서는 공백</p><p>    $s = array();</p><p> </p><p>    $s = explode(" ", $search_text);</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>if(count($s) > 0 && strlen($s[0]) > 0 ){</p><p> </p><p><span class="Apple-tab-span" style="white-space:pre">			</span>if ($str)</p><p>        $str .= " and ";</p><p>    // 검색필드를 구분자로 나눈다. 여기서는 +</p><p>    //$field = array();</p><p>    //$field = explode("||", trim($search_field));</p><p>    $tmp = array();</p><p>    $tmp = explode(",", trim($search_field));</p><p>    $field = explode("||", $tmp[0]);</p><p>    $not_comment = $tmp[1];</p><p> </p><p>    $str .= "(";</p><p>    for ($i=0; $i<count($s); $i++) {</p><p>        // 검색어</p><p>        $search_str = trim($s[$i]);</p><p>        if ($search_str == "") continue;</p><p> </p><p>        // 인기검색어</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>/*</p><p>        $sql = " insert into $g5[popular_table] set pp_word = '$search_str', pp_date = '$g5[time_ymd]', pp_ip = '$_SERVER[REMOTE_ADDR]' ";</p><p>        sql_query($sql, FALSE);</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>*/</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>if(count($field) > 0){</p><p>        $str .= $op1;</p><p>        $str .= "(";</p><p> </p><p>        $op2 = "";</p><p>        for ($k=0; $k<count($field); $k++) { // 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)</p><p>            $str .= $op2;</p><p>            switch ($field[$k]) {</p><p>                case "mb_id" :</p><p>                case "wr_name" :</p><p>                    $str .= " $field[$k] = '$s[$i]' ";</p><p>                    break;</p><p>                case "wr_hit" :</p><p>                case "wr_good" :</p><p>                case "wr_nogood" :</p><p>                    $str .= " $field[$k] >= '$s[$i]' ";</p><p>                    break;</p><p>                // 번호는 해당 검색어에 -1 을 곱함</p><p>                case "wr_num" :</p><p>                    $str .= "$field[$k] = ".((-1)*$s[$i]);</p><p>                    break;</p><p>                // LIKE 보다 INSTR 속도가 빠름</p><p>                default :</p><p>                    if (preg_match("/[a-zA-Z]/", $search_str))</p><p>                        $str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))";</p><p>                    else {</p><p><span class="Apple-tab-span" style="white-space:pre">					</span>   if(strstr($field[$k], '년이상')){</p><p><span class="Apple-tab-span" style="white-space:pre">						</span>  $search_str = preg_replace("/[^0-9]*/s", "", $search_str);</p><p><span class="Apple-tab-span" style="white-space:pre">						</span>  $field_str = explode('년이상', trim($field[$k]));</p><p><span class="Apple-tab-span" style="white-space:pre">					</span> </p><p><span class="Apple-tab-span" style="white-space:pre">						</span>  $str .= "(";</p><p><span class="Apple-tab-span" style="white-space:pre">						</span>  $str_add = "";</p><p><span class="Apple-tab-span" style="white-space:pre">						</span>  foreach($field_str as $val){</p><p><span class="Apple-tab-span" style="white-space:pre">							</span> $num = preg_replace("/[^0-9]*/s", "", $val);</p><p><span class="Apple-tab-span" style="white-space:pre">							</span> if($num >= $search_str) {</p><p><span class="Apple-tab-span" style="white-space:pre">								</span>$num = $num.'년이상';</p><p><span class="Apple-tab-span" style="white-space:pre">							</span>   $str_add .= "INSTR($field[$k], '$num') or ";</p><p><span class="Apple-tab-span" style="white-space:pre">							</span> }</p><p><span class="Apple-tab-span" style="white-space:pre">						</span>  }</p><p><span class="Apple-tab-span" style="white-space:pre">						</span>  $str .= substr($str_add, 0, -3);</p><p><span class="Apple-tab-span" style="white-space:pre">						</span>  $str .= ")";</p><p><span class="Apple-tab-span" style="white-space:pre">					</span>   } else {</p><p><span class="Apple-tab-span" style="white-space:pre">						</span>  $str .= "INSTR($field[$k], '$search_str')"; </p><p><span class="Apple-tab-span" style="white-space:pre">					</span>   }</p><p><span class="Apple-tab-span" style="white-space:pre">					</span></p><p>                    }</p><p><span class="Apple-tab-span" style="white-space:pre">					</span></p><p>                    </p><p>            }</p><p>            $op2 = " or ";</p><p>        }</p><p>        $str .= ")";</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>}</p><p><span class="Apple-tab-span" style="white-space:pre">		</span></p><p>        //$op1 = ($search_operator) ? ' and ' : ' or ';</p><p>        $op1 = " $search_operator ";</p><p>    }</p><p> </p><p>    $str .= " ) ";</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>}</p><p>    if ($not_comment){</p><p>        $str .= " and wr_is_comment = '0' ";</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>}</p><p><span class="Apple-tab-span" style="white-space:pre">	</span></p><p>    return $str;</p><p>}</p><p> </p><p>function append_sql($sql, $appender, $text) {</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>if(strlen($sql) > 0) {</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>$sql = $sql.$appender.$text;</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>} else {</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>$sql = $text;</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>}</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>return $sql;</p><p>}</p><p>// 추가 및 변경 함수 끝</p><p> </p><p>$arr_search = array();</p><p>for($j = 1; $j < 11; $j++){</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>if($_GET["wr_".$j] && strlen($_GET["wr_".$j]) > 0){</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>$arr_search[name][] = "wr_".$j;</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>$arr_search[val][] = $_GET["wr_".$j];</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>}</p><p>} </p><p>

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트

제작의뢰 내용 확인후 댓글 달아드립니다.

검색식 조건이 잘못된게 맞는것 같습니다.

"년이상"은...구지 db에 저장되지 않아도 될것 같습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인