DB 검색(select) 좀 봐주셨으면 좋겠습니다.

DB 검색(select) 좀 봐주셨으면 좋겠습니다.

QA

DB 검색(select) 좀 봐주셨으면 좋겠습니다.

본문

 

그누보드5를 이용하여 게시판을 수정중에 있습니다.

 

현재 사용중인 테이블명이 g5_write_detection_info 이고... 해당 테이블을 이용하는 게시판(view) 부분입니다.

 

해당 페이지에서 검색버튼을 누르게 되면 팝업창이 열리며 아래의 코드가 들어있는 파일을 열게 되고 해당 창에서는

 

g5_write_g_security_total 테이블을 검색하여 기업명등을 검색하게 되고...

 

원하는 기업명을 클릭 했을때...

 

동일한 기업명이 g5_write_detection_info 내에 존재한다면 해당 레코드의

 

notice_number (통지번호)필드값을 추출하여 필요한 부분의 값(끝에 3자리)만을 빼내어

 

숫자로 바꾸고, 숫자 형식으로 바꾼 데이터 중 가장 큰 값에 1을 더하여

 

원래 형식대로 바꾸어 다시금 돌려주는 코드입니다. (이렇게 할려구요.. ㅎㅎㅎ)

 

근데.... 프로그램 오류라고 하면서 열리지가 않네요... ㅡ.ㅡ;;

 

원래 다른 용도로 사용이 되던 코드였는데....

 

두번째 select 쿼리 부분부터 HereDoc 문법 앞 부분까지 새로이 추가한 것입니다.

 

원래 프로그램을 이리 짜면 되는게 아닌건지.... 제가 그냥 생각대로.. 이렇게하면 되지 않을까 했는데...

 

아니나 다를까... 안되네요... ㅎㅎㅎㅎ

 

어떻게 수정해야 될런지 첨삭 좀 부탁드려 봅니다.. (_ _)

 

 


<?php
	if($sch_text != "") { // 초기 로딩시 실행 안함
		$sql = "select company_name, detection_mail from g5_write_g_security_total where company_name like '%".$sch_text."%'";
				
		$result = sql_query($sql);
		
		$search_count = 0;
		
		$string_year_month = date("y")."-".date("m")."-";
		
		while ($row = sql_fetch_array($result)) {
		
			$string_company_name = htmlspecialchars($row[company_name]);		# 고객사명
			$string_detection_mail = htmlspecialchars($row[detection_mail]);	# 탐지통보 E-mail
			
			
			$sql_notice_number = "select notice_number from g5_write_g_detection_info where company_name like '".$string_company_name."'";
			$result_notice_number = sql_query($sql_notice_number);
			
			$notice_number_max = 0;
			
			while ($row_notice_number = sql_fetch_array($result_notice_number)) {
 
				$string_notice_number = htmlspecialchars($row_notice_number[notice_number]]);
			
				$string_number_int = (int)substr($string_notice_number, -3);
				
				if($notice_number_max < $string_number_int) {
					$notice_number_max = $string_number_int;
				}
			}
			
			$notice_number_max++;
			
			$tmp_string = (string)$notice_number_max;
			$string_tmp_number = str_pad($tmp_string, 3, "0", STR_PAD_LEFT);
			
			
			echo <<< HereDoc
			
<tr><td style="padding:2 0 2 10;" align="center"><a href="javascript:setVar_company('{$string_company_name}','{$string_detection_mail}','{$string_year_month}','{$string_tmp_number}'">{$row[company_name]}</a></td></tr>
HereDoc;
 
		$search_count++;
		}
		
		if (!$search_count){
			echo "<tr><td colspan='2' align='center'><b>".$sch_text."</b>(으)로 검색한 고객사가 없습니다.</td></tr>";
		}
	}
?> 

 

 

이 질문에 댓글 쓰기 :

답변 4

17~36 라인 대신

$sql_notice_number = 'select MAX(CAST(RIGHT(notice_number,3) AS UNSIGNED))+1 as max from g5_write_g_detection_info where company_name = "'.$string_company_name.'"';

$row_notice_number = sql_fetch_array($sql_notice_number);

$notice_number_max = $row_notice_number['max'];

if(!$notice_number_max) $notice_number_max = 1;

$string_tmp_number = sprintf('%03d', $notice_number_max);

이렇게 하면 되지 않을까 싶긴 한데요..

뒷 세자리 잘라서 찾은 맥스값이 999라면 결과값이 1000이 될텐데 문제 없는건지 모르겠습니다.

그런데 프로그램 오류가 있다고 하셨는데.. 얼핏봐서는 오류나올만한데가 잘 안보이는군요.

위 소스를 적용해도 오류가 있을 수 있겠네요. 다른 부분에서 나온 오류일지도... 

SELECT notice_number FROM g5_write_g_security_total INNER JOIN g5_write_detection_info ON g5_write_g_security_total.기업명 = g5_write_detection_info.기업명

 WHERE  g5_write_detection_info.notice_number LIKE '%R필요한 값'

 

요롷게 하면 되지 않을까요? 머리가 안좋아 이미지가 안그러지네요 ㅜㅜ

일단 주어진 조건으로 함 짜봤습니다. 참고하세요.

남보살님.... 먼지손님 두분 모두 답변 감사드립니다.. (_ _)

 

두분모두 채택해 드리고 싶었지만, 한분밖에 안 되는 관계로.. ㅎㅎㅎ

 

먼지손님 코드로 바꾸어 실행시켜 봤는데... 오류 없이 동작을 합니다.

 

그런데... 숫자 값이 증가가 되지 않네요... ㅎㅎㅎ

 

글을 하나 쓰고.... 다음에 동일 기업에 대해 글을 써도 숫자가 동일하게 001로 나오네요.... ^^

sql_query()추가하시고 나서는 제대로 잘 된건가요? 제가 실수를 하는 바람에.. ^^;
참고로 위의 제 답변의 댓글처럼 sql_fetch() 로 하면 따로 sql_query()사용하지 않으셔도 됩니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 59,604
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT