[ php ] 쿠폰발행
페이지 정보
작성자 웹지기 댓글 0건 조회 6,227회 작성일 18-09-27 16:08본문
DB
[code]
CREATE TABLE `coupon_test` (
`idx` int(11) NOT NULL auto_increment,
`couponNO` varchar(16) NOT NULL,
`ID` varchar(20) default NULL,
PRIMARY KEY (`idx`)
) ENGINE=MyISAM DEFAULT CHARSET=euckr AUTO_INCREMENT=1 ;
[/code]
idx: 고유 인덱스 번호
couponNO: 쿠폰번호 (중복불가 varchar(16) 숫자와 알파벳으로 이루어짐)
ID: 해당 쿠폰을 사용한(발급받은) ID. ID를 입력할 수 없는 경우에는 reserved 라고 표기해 두어 중복발급을 피하도록 한다.
쿠폰생성 소스
[code]
<?
$Host = "호스트주소";
$User = "DB
ID";
$Passwd = "DB PASSWORD";
$DB_Name = "DB NAME";
// 쿠폰발행을 위한 배열. 숫자+알파벳
$arr_no=array("1","2","3","4","5","6","7","8","9","0");
$arr_alphabet=array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
// DB 접속
$dbconn = mysql_connect("$Host","$User","$Passwd") or die("데이터베이스 연결에 실패하였습니다.");
$status = mysql_select_db("$DB_Name",$dbconn);
// 쿠폰발행 루프 (10000개의 번호를 생성한다고 가정)
$x=0;
while ($x<10000){
$str="";
// 쿠폰번호의 길이는 숫자+알파벳으로 16자 (물론 조정가능)
for ($i=0; $i<16; $i++) {
// 랜덤을 돌려 0 이면 숫자, 1 이면 알파벳 부여
if (rand(0,1)==0)
$str.=$arr_no[rand(0,(count($arr_no)-1))];
else
$str.=$arr_alphabet[rand(0,(count($arr_alphabet)-1))];
}
// 해당 번호가 DB 있는 중복번호인가 체크
$query = "select count(idx)
from coupon_test where couponNO='".$str."'";
$result = mysql_query($query, $dbconn);
$col = mysql_fetch_row($result);
// 중복번호가 아니라면 DB 에 넣음
if ($col[0]==0) {
$query = "insert into
coupon_test VALUES ('', '".$str."' ,'')";
$result = mysql_query($query,
$dbconn);
echo $str."<br>";
$x++;
}
// 중복번호라면 다시
else
continue;
}
?>
[/code]
1.DB에 발행할 쿠폰수만큼 번호를 생성해둔다.(자동생성되게 해야지 이런건) (해당 쿠폰을 발행받은 ID는 비워둔다) [! 쿠폰유효기간도 필요하지 않을까??? !]
2.쿠폰을 발행할 때 ID가 비어있는 쿠폰번호를 발행한다. [! 예약된 쿠폰번호라는 것도 필요할 듯 하다!! ID 부분을 reserved 하는 형식으로 저장하든지 해서]
3.쿠폰을 사용할 때 DB에서 해당 쿠폰번호가 있는지, 이미 발행받은 ID가 있는지 검사하여 모두 통과되면 member 테이블의 쿠폰기간 필드를 업데이트 한다.
관련링크
댓글목록
등록된 댓글이 없습니다.