반응형
[1] BINARY() 대소문자 구분 함수

유저 아이디와 비밀번호는 대소문자 구분을 위해서 BINARY 함수를 써주면된다.

EX ) select * FROM tb_admin where user_id = binary('admin')

반응형

'DB > Maria & Mysql' 카테고리의 다른 글

MYSQL Tinyint(1) 의 의미  (2) 2010.07.27
[MYSQL GRANT를 이용한 권한 설정]  (0) 2010.07.16
[Mysql Paging Query]  (3) 2010.07.02
Mysql Character Set 변경방법  (0) 2010.06.16
Mysql 원격접속 허용 설정하기  (0) 2010.06.04
반응형
PHP 에서 E-mail 전송을 지원해주는 여러 모듈들이 즐비하다.

많기도 참 많다.

근데!! 중요한건 이런 모듈들을 사용하기에는 너무 어렵고 복잡하다.

우연히 phpschool.net에서 좋은 소스를 발견하여 필요한 것만 사용하였다.

하지만 template을 이용한 방법은 추가되지 않았다.

그래서 이번기회에 다운받은 소스를 업그레이드 하여

나만의 모듈을 만들었다.

첨부한다. 필요한 사람들은 제발 댓글 달고 가져 가길 바란다.

smtp 주소까지 모두 적을 수 있으니,, ㅋㅋㅋ 아주 좋은 모듈 이다.




반응형

'Program > PHP' 카테고리의 다른 글

[ PHP 에서 DB결과 처음포인터 위치하기 ]  (0) 2010.08.28
[ JQuery Ajax + PHP 한글 처리문제 해결방법 ]  (0) 2010.07.20
PHP Excel Download Module  (21) 2010.06.22
[ PHP5 공통모듈 ]  (0) 2010.06.10
PHP - HttpRequest ( POST 방식 )  (0) 2010.06.09
반응형
Mysql은 오라클이나 SQL Server 군 처럼 Paging을 하기위한

rownum 이란 함수가 지원되지 않는다.

따라서 보통 limit를 사용하는데, 이렇게 되면 페이지의 순번을 나눌때 자바단에서 별도 로직으로 처리하여

보여줘야 하기 때문에 여간 귀찮은 일이 아니다.

그래서 Mysql 에서 Rownum을 구현하여 Paging하는 기법에 대해 알아보도록 하겠다.


[ MYSQL 에서 RowNum을 구현한 Paging Query ]
  SELECT *
FROM   (SELECT @rnum := @rnum + 1 AS rownum,
               testdb.* 
        FROM   (SELECT @rnum := 0) r,
               testdb
        ORDER  BY idx DESC) result
WHERE  rownum BETWEEN ( 1 + ( 1 - 1 ) * 10 ) AND ( 1 * 10 ) 



위 쿼리는 페이지 사이즈가 10인 경우를 셋팅한 값이다.

페이지 사이즈가 1 ~ 11 ~ 21 이렇게 10을 공차로 진행되기 때문에 등차수열 공식에 따라

F(x) = a1(초기값) + (n-1)d(공차)

를 이용하여 1+ (n-1) * 10 이 된다.

그럼 limit를 이용한 방법에 따라 보자

[ MYSQL 에서 LIMIT 를 이용한 Paging Query ]
 SELECT *
FROM   testdb
ORDER  BY idx DESC
LIMIT  0, 10 



위 쿼리는 결과값은 앞의 값과 별 다를것이 없다.

그럼 둘의 속도차이는 어떤지 보자...

Mysql 옵티마이져가 Cost인지 뭔지는 아직 잘모르는 상황에서 Isam 방식의 테이블 스캔시

80만건의 데이터를 기준으로 하였을때

Rownum = 4초
limit  = 0초


이다. 흠.~~` 근데 limit를 쓰면 자바단에서 소스로 처리해야할 순번 문제가 있다.

결론적으로 데이터가 대용량 서비스 인 경우는 limit를 사용하는게 적당하며, 50만건 이하의 데이터가 있을 시에는
ROWNUM을 구현하는 것이 바람직 한 방법이라고 생각한다.

이상 랑이의 한마디 끝~~

반응형

'DB > Maria & Mysql' 카테고리의 다른 글

[MYSQL GRANT를 이용한 권한 설정]  (0) 2010.07.16
[ MYSQL 유용한 함수 ]  (0) 2010.07.09
Mysql Character Set 변경방법  (0) 2010.06.16
Mysql 원격접속 허용 설정하기  (0) 2010.06.04
Mysql 계정 생성 방법 기술  (0) 2010.06.04
반응형

PHP 에서 Excel Download 방법은 몇가지가 있다.

머 JSP 도 그리 차이는 없지만 젤 편한 방법이 MIME TYPE을 변경하는 일이다.


[1] MIME TYPE 변경방법

 header("Content-type: application/vnd.ms-excel; charset=UTF-8");

위와 같이 vnc.ms-excel MIME Type 을 사용하여 변경하는 방법 이 있지만, office 2007이 나온 뒤로는 그닥 좋은 방법으로 평가받지 못하는 것이 현실이다. 그 이유는 매번 파일을 열때마다 아래 그림과 같은 에러가 발생하기 때문이다.

==> 에러 그림


이런 이유로 이번 회사에서 사내 프로젝트시 excel file 제작은 인터넷을 검색하던중 MS-Excel Stream Handler 모듈을 발견하게 되었다.

[2] MS-Excel Stream Handler Module 다운로드 방법

예제 모듈 다운로드 사이트 :
http://www.phpclasses.org/package/1919-PHP-Stream-wrapper-to-read-and-write-MS-Excel-files.html

위 예제 사이트에 들어가서 회원가입 후 로그인 하면 MS 예제 파일을 다운받을 수 있다.

예제 파일은 현재 한글 처리가 안되어있을 뿐더라 header값에 값이 잘못 설정되어있다.

[ 다운받은 원본 ]


 require_once "excel.php";
$export_file = "xlsfile://tmp/example.xls";
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
header ("Content-type: application/x-msexcel");
header ("Content-Disposition: attachment; filename=\"" . basename($export_file) . "\"" );
header ("Content-Description: PHP/INTERBASE Generated Data" );
readfile($export_file);
exit;

header ("Cache-Control: no-cache, must-revalidate");  ==> 요기 부분이 문제의 line이다.

테스트 결과 firefox 와 크롬에서는 다운로드가 잘되는데 IE에서는 경로를 못찾는 문제가 생긴다.

그래서 저부분을 php.net에 있는 내용데로 바꾸어주었다.

header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");

저부분이 왜 저렇게 돼는지는 아직 원인을 모른다. 그래서 위키디피아에 검색해 보니 이런 글이 있다.

 IE에서는 Cache-Control:no-cache로 응답이 온 경우 local cache에 리소스를 저장하지 않으므로 해당 resource는 항상 일반 Request(Condtional-GET 하지 않음)로 요청하게 된다. 하지만 Firefox에서는 Cache-control:no-cache인 경우에도 page navigation(back/forward)를 위해 local cache에 저장한다. 이 경우 저장시에 브라우저가 만기일을 1970-01-01 09:00:00로 설정하며, 응답 헤더에 Last-Modified나 Etag가 존재할 경우에는 Condtional-GET이 발생하며, 없을 경우에는 일반 request를 하도록 되어 있다. 따라서 정말로 no-cache 한 동작을 하기 위해서는 응답 헤더에 Cache-control:no-cache를 추가할 뿐만 아니라 Last-modified와 Etag를 제거해야 한다.
                                                                        [위키디피아 발췌글]

추가적으로 한글 문제를 해결하기 위해 charset를 추가한다.

header ("Content-charset=euc-kr");

이제 바로 사용가능하도록 수정이 완료되었으니 최종 본을 살펴보자


  27 header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
 28 header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
 29 header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
 30 header ("Pragma: public");
 31 header ("Content-type: application/x-msexcel");
 32 header ("Content-Disposition: attachment; filename=\"" . basename($export_file) . "\"" );
 33 header ("Content-Description: PHP/INTERBASE Generated Data" );
 34 header ("Content-charset=euc-kr");
 35 ob_clean();
 36 flush();
 37 readfile($export_file);
 38 exit;


이렇게 변경하니 다운로드가 원활하게 됐다.


매번 다운받아 헤더값 을 다시 수정하기도  귀찮고 하니 한글이랑 IE에서 잘되는 샘플  파일을 첨부하도록 하겠다.

받아가는 놈들은 고맙다고 제발 댓글 달고 조회수좀 팍팍 올려주길 바란다.~~~


이상 성랑이의 PHP Excel 다운로드 강좌였음 ㅋㅋㅋ ^^

끝~~~~~~~~~~




반응형

+ Recent posts