2007-09
일단 인덱스 리스트에서...
list.php?i=a // 'a'로 시작하는 subject 검색
list.php?i=1 // '1'로 시작하는 subject 검색
list.php?i=ㄱ // 'ㄱ'으로 시작하는 subject 검색
이런식으로 검색할 인덱스를 넘겨 줍니다.
그런다음 검색할 인덱스($i)의 상태에 따라서 쿼리문을 만듭니다..
상당히 무슥하게 하나씩 처리해 주었는데... ㅡㅡ;;
한글의 경우 별다른 방법이 없을듯 하구요..
( if ~ else를 switch() 로 바꾸는 것이 더 낳을 라나?? )
주석은 간단하게 달았습니다...
제가 가진 게시판의 제목으로 테스트 했을때는 문제가 없었는데..
혹시 문제가 있다면... 조언을 해주시기 바랍니다..
ex> 마지막 'ㅎ'에 대해서 처리하는것
'ㅎ'은 그 끝을 어떻게 결정해야 할지 몰라서.. 그냥 '하' 이후의 모든 값을 가져오도록 하였습니다. ㅡㅡ;;
아.. 게시판 제목 컬럼에는 binary 옵션을 사용하지 않았습니다..
일반 varchar 형 컬럼입니다. 그래도 정렬이 잘 되네요.. ^^;;
-----------------------------------------------------------------------------------
// 검색할 인덱스가 숫자이거나 영문자라면..
if( preg_match( "/[0-9a-zA-Z]/", $i ) )
{
// 매우 단순 간단한 정규식 검색....
$query = "select subject from table_name where subject RLIKE '^$i' order by subject";
}
else if( "ㄱ" == $i ) // 'ㄱ'으로 시작하는 subject 검색
{
$query = "select subject from table_name
where subject RLIKE '^(ㄱ|ㄲ)'
OR ( subject >= '가' AND subject < '나' )
order by subject";
}
else if( "ㄴ" == $i ) // 'ㄴ'으로 시작하는 subject 검색
{
$query = "select subject from table_name
where subject RLIKE '^ㄴ'
OR ( subject >= '나' AND subject < '다' )
order by subject";
}
...
...
// 중간 생략.. 'ㄱ', 'ㄲ' 같이 쌍자음(이거 제대로된 명칭이 모죠?? ㅡㅡ;; ) 만 주의하면 됩니다.
...
...
else if( "ㅎ" == $i )
{
$query = "select subject from table_name
where subject RLIKE '^ㅎ' OR subject >= '하'
order by subject";
}
// get list data && print list
$result = mysql_query( $query ) or die( "mysql query error - $query<br>" );
while( $row = mysql_fetch_array( $result, MYSQL_ASSOC ) )
{ echo htmlspecialchars( stripslashes( $row[subject] ) ) ."<br>"; }
------------------------------------------------------------------------------------
수겅 02-08-01 09:43
아래같은 방법이 더 좋지 않을까요?
if($_GET[i] == \"가\") {
$search_contents = \"name >= \'가\' and name < \'나\'\";
}
$query = \"select * from $table where $search_contents order by name\";
아래같은 방법이 더 좋지 않을까요?
if($_GET[i] == \"가\") {
$search_contents = \"name >= \'가\' and name < \'나\'\";
}
$query = \"select * from $table where $search_contents order by name\";
imcrazy 02-08-01 11:03
??
이부분 \"if($_GET[i] == \"가\")\"을 말씀 하시는 건지..
아님...
$search_contents = \"name >= \'가\' and name < \'나\'\";
이렇게 한다음 아래에서 완전한 쿼리문을 완성하는 것을 말씀 하시는 것인지...
처음 것은 그렇게 하면 \'ㄱ\'같은 자음만 있는 것이 검색이 안되서 그랬구요..
두번째 것은 물론 실제 사용할때는 셀렉트와 where부분을 따로 만들죠.. 여기서는 보기 좋게.. ^^;; 합쳐 놓았고..
??
이부분 \"if($_GET[i] == \"가\")\"을 말씀 하시는 건지..
아님...
$search_contents = \"name >= \'가\' and name < \'나\'\";
이렇게 한다음 아래에서 완전한 쿼리문을 완성하는 것을 말씀 하시는 것인지...
처음 것은 그렇게 하면 \'ㄱ\'같은 자음만 있는 것이 검색이 안되서 그랬구요..
두번째 것은 물론 실제 사용할때는 셀렉트와 where부분을 따로 만들죠.. 여기서는 보기 좋게.. ^^;; 합쳐 놓았고..
TheHP 02-08-01 13:43
저렇게 하는거군요.. 저는 무식해서 필드를 하나 더 만들어서;;
ㄱ,ㄴ,ㄷ,ㄹ, 이런식으로 넣어줬는데..ㅜ.ㅜ 좋은정보 감사합니다
저렇게 하는거군요.. 저는 무식해서 필드를 하나 더 만들어서;;
ㄱ,ㄴ,ㄷ,ㄹ, 이런식으로 넣어줬는데..ㅜ.ㅜ 좋은정보 감사합니다
유광희 02-09-05 11:40
13 만개 데이타에서 데이타를 처리해 보았더니
mysql> select count(*) from l_Lyrics where title rlike '^(ㄱ|ㄲ)' OR (title >= '
가' AND title
13 만개 데이타에서 데이타를 처리해 보았더니
mysql> select count(*) from l_Lyrics where title rlike '^(ㄱ|ㄲ)' OR (title >= '
가' AND title
유광희 02-09-05 11:41
앗 이런.저런식으로 했더니 1.14 sec 가 나옵니다.
인덱스 걸린거랑은 관계가 없나 ^^
좀 느려여 히
'PHP' 카테고리의 다른 글
php http header (0) | 2016.06.14 |
---|---|
PHP 코딩스타일 최적화 (0) | 2016.06.14 |
정규식 (0) | 2016.06.14 |
php에서 싱글톤 패턴 이용하기 (클래스에서의 참조) (0) | 2016.06.14 |
게시판 본문의 개인정보 숨기기 (0) | 2015.08.27 |