2014-01-30 3 views
0

맞춤 주문 번호 생성을 시도했습니다. 내 MySQL 테이블은 다음과 같습니다 : tblOrder id int (11) AI; ordno varchar (50);맞춤 주문 번호 생성

나는이 작업을 수행하기 위해 이벤트를 기록하기 전에 으로 PHP 블록 내에서 다음 함수를 사용하려고합니다.

{ 

$sql="select max(substr(ordno,9)) as mx from ord where substr(ordno,7,2)=month(now()) order by mx"; 
$rs=CustomQuery($sql); 
$data=db_fetch_array($rs); 
$str="OR-"; 
$str2=date("Ymd"); 
$str3=($data["mx"]+1); 
$values["ordno"]="$str$str2".str_pad($str3, 5, 0, STR_PAD_LEFT);} 

문제는이 코드를 실행하면 항상 같은 날 같은 순서로 번호를 알려 OR-2014013000001 모든 기록 항목입니다. 그것은 변하지 않습니다. 너 나 좀 도와 줄래? 미리 감사드립니다.

답변

0

복합체 ordno 열을 구문 분석하는 방식으로 실제 문제가 숨겨져 있다고 생각합니다. SUBSTRING은 0부터 시작하는 인덱스가 아니라 1부터 시작한다는 것을 기억하십시오.

$sql="select max(substring(ordno,12, 5)) as mx from ord where 
     substring(ordno, 8, 2)=month(now()) order by mx"; 

... 원하는 값을 얻기 위해 올바른 구문 분석을하는 것처럼 보입니다.

의미 열을 단일 열로 인코딩하는 대신 별도의 필드에 주문 데이터를 저장하는 것이 좋습니다. 이런 식으로 붙어있을 수도 있지만 편집 할 수있는 경우 잘 구조화 된 date 주문 날짜 열과 int 주문 순서 열을 가져 와서 주문 번호를 즉시 계산하지 않으시겠습니까?

+0

완벽 효과가 있습니다. 당신의 도움을 주셔서 감사합니다. – Kortoa

+0

@Kortoa 스택 오버 플로우에 오신 것을 환영합니다! 작동하는 경우이 답변을 수락하십시오 (다른 질문에 대해서도). –

+0

좋은 조언을 주셔서 감사합니다. 나는 PHP 프로그램에 대해 많이 알지는 못한다. 나는 보통 날짜 ("ymdHis") 함수로 번호를 매긴다. 주문 번호와 함께 order date를 사용하여 사용자 정의 번호를 생성하는 방법에 대한 설명이 명확하지 않습니다. 다시 한번 감사드립니다. – Kortoa