001002003004005006007008009010011012013014015016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109
<?php // (2022.8.27, 차재복, Cha Jae Bok, http://www.ktword.co.kr) # db 설정 (정보통신기술용어 db) include_once "../base_utils/db_conn.php"; // 이로부터 db 접속 성공의 결과로써, $dbi 변수가 넘어옴 # 페이지 구분 관련 함수 라이브러리 호출 include "../paging/paging_utils.php"; # 파라미터 전달 $cur_page = $_GET['p']; // 요청 페이지 번호 if ( !empty($cur_page) and !is_numeric($cur_page) ) exit; if ( empty($cur_page) ) $cur_page = 1; // $cur_script ; // 검색어 시작 $sh = $_REQUEST['sh']; if ( isset($_REQUEST['sh']) and !empty($sh) and !is_numeric($sh) or $sh<0 ) exit; // 해킹방지 (수치>0) # 페이지 관련 상태 값 설정 및 요약 // 페이지 당 출력 레코드 수 $page_records = 10; // 레코드 쿼리를 위한 where 절 $letters = "가나다라마바사아자차카타파하ABCDEFGHIJKLMNOPQRSTUVWXYZ數"; if (empty($sh)) { // 가 ~ 나 $where_str = "substr(word,1,1) >= '".mb_substr($letters,0,1)."' and substr(word,1,1) < '".mb_substr($letters,1,1)."'"; } else { // 한글 : 가 ~ 파 if( $sh >= 0 and $sh < 13 ) { $where_str = "substr(word,1,1) >= '".mb_substr($letters,$sh,1)."' and substr(word,1,1) < '".mb_substr($letters,$sh+1,1)."'"; // 한글: 하 } else if( $sh == 13 ) { $where_str = "substr(word,1,1) >= '".mb_substr($letters,$sh,1)."' and substr(word,1,1) < '힣'"; // 영어 A ~ Y } else if ( $sh >= 14 and $sh <= 39 ) { $where_str = "upper(substr(word,1,1)) = '".mb_substr($letters,$sh,1)."'"; // 숫자 } else if ( $sh = 40 ) { $where_str = "substr(word,1,1) >= '0' and substr(word,1,1) <= '9'"; } else { exit ("not allowed parameter !!!"); } } $sh_word = mb_substr($letters,$sh,1); // 전체 레코드 수 계산 쿼리 // $query = "select korean from cjb_dict where {$where_str} order by korean"; $query = "select word from dict_word_list where {$where_str} order by word"; $total_records = total_records ($query, $dbi); // 페이지 정보 함수 호출을 위한 매개변수 배열화 $page_info_vars = array ( 'sh' => $sh_word, // 검색어 'total_records' => $total_records, // 전체 레코드 수 'cur_page' => $cur_page, // 현재 페이지 번호 'page_records' => $page_records // 페이지 당 출력 레코드 수 ); // 페이지 정보 함수 호출 및 그 결과 $pages = page_info ( $page_info_vars ); $total_pages = $pages['total_pages']; $start_record = $pages['start_record']; # div 설정 echo "<div id='page_div' style='margin:0;padding:0;'>"; # 페이지 이동 안내 (상단) page_display ($cur_page, $total_pages, $cur_script.'?'); echo "<br><br>"; # 해당 페이지 쿼리 및 출력 // 쿼리문 // $query = "select korean,no from cjb_dict where {$where_str} order by korean // limit $start_record, $page_records"; $query = "select word,no from dict_word_list where {$where_str} order by word limit $start_record, $page_records"; // 쿼리 실행 $result=mysqli_query($dbi,$query); if (mysqli_errno($dbi)) { echo mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n";} // 레코드별로 가져와서 화면에 출력함 $i = 1; while ( $matched = mysqli_fetch_assoc($result) ) { echo $cur_page . "-" . $i." (".($start_record+$i).") "; echo "<a href='/test/view/view.php?no=".$matched['no']."' class='line'>".$matched['word']."</a>"; echo "<br>"; $i = $i + 1 ; } echo "<br>"; # 페이지 이동 안내 (하단) page_display ($cur_page, $total_pages, $cur_script.'?'); # div 종료 echo "</div>"; ?>