[ php ] 쿠폰발행 > php

본문 바로가기
사이트 내 전체검색

php

[ php ] 쿠폰발행

페이지 정보

작성자 웹지기 댓글 0건 조회 4,947회 작성일 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 테이블의 쿠폰기간 필드를 업데이트 한다. 

추천0 비추천0

댓글목록

등록된 댓글이 없습니다.

Total 82건 5 페이지
  • 22 [ php ] Class 사용법 정리 6.부모키워드
  • 6.부모키워드부모클래스의메쏘드호출보통부모클래스에서선언된메쏘드를자식클래스에서재정의하는이유는크게두가지가있습니다.1.부모클래스메쏘드를완전히새롭게정의하기위하여2.부모클래스메쏘드의기능에새로운기능을추가하기위하여첫번째기능은부모클래스의메쏘드를무시하고메쏘드에새로운정의를함으로써부모클래스의메쏘드정의를숨기는것입니다.그러나때로는부모클래스의메쏘드를모두지우는것보다는추가적인기능이필요한경우가있습니다.이같은경우에는부모클래스의메쏘드와자식클래스에서재정의된메쏘드를모두수행하게될것입니다.즉,재정의된메쏘드구문내에서부모클래스의메쏘드를호출할수...
  • 웹지기 09-11 4563 0 0 댓글 0
  • 21 [ php ] Class 사용법 정리 5.범위연산자
  • 5.범위연산자범위연산자란?PHP4에서만지원되며클래스와메쏘드또는클래스와멤버변수를연결시켜주는일로범위연산자(scope resolver)뒤에나오는메쏘드와멤버변수의스코프(사용범위)를지정하는일을하는것입니다.클래스명::메쏘드명클래스명::멤버변수명범위연산자사용목적1.인스턴스되지않은클래스의메쏘드에접근할때2.부모클래스의메쏘드와멤버변수에접근할때인스턴스되지않은클래스에있는메쏘드에접근할때class A { function example(){ echo "클래스 A에 정의된 메쏘드 example.\n"; }...
  • 웹지기 09-11 4845 0 0 댓글 0
  • 20 [ php ] Class 사용법 정리 4. 생성자
  • 4.생성자생성자란?생성자(constructor)는클래스의새로운인스턴스가생성될때자동적으로호출되는클래스내의함수이며,클래스명과동일한이름를갖는특수한메쏘드입니다.classCart{ var $items; // Items in our shopping cart// Add $num articles of $artnr to the cartfunction add_item ($artnr, $num){ $this-&gt;items[$artnr]+= $num; }// Take $num articles of $ar...
  • 웹지기 09-11 4849 0 0 댓글 0
  • 19 [ php ] Class 사용법 정리 3. 클래스상속
  • 3.클래스상속클래스를상속하려면?기존에이미작성된클래스를상속(class inheritance)받으면이미작성된메쏘드와멤버변수를그대로이어받게됩니다.상속받은특성에덧붙여새로운특성을추가하는방법으로새로운클래스를정의하게됩니다.이와같이기존의클래스로부터특성을이어받는것을상속이라고합니다.이때확장된클래스를정의하기위해"extends"라는키워드를사용합니다.부모클래스&amp;자식클래스에관련된용어기존의클래스와확장된클래스를나타내는용어는객체지향언어마다다양하게사용되고있습니다.그러나어떤용어를사용하더라도같은의미...
  • 웹지기 09-11 3815 0 0 댓글 0
  • 18 [ php ] Class 사용법 정리 2. 객체생성
  • 2.객체생성객체생성=객체초기화(object initialization)=인스턴스화(instantiation)클래스는붕어빵을만드는틀(= type,=template)과같은것으로,클래스내에정의된메쏘드와멤버변수를사용하기위해서는틀을가지고붕어빵을만드는것같이객체를생성하여야합니다.객체(object)를초기화하는방법은new연산자를사용하여객체를변수에인스턴스시키는것입니다.classCart{ var $items; // Items in our shopping cart// Add $num articles of $artnr ...
  • 웹지기 09-11 7464 0 0 댓글 0
  • 17 [ php ] Class 사용법 정리 1. 클래스 정의
  • 1.클래스정의클래스란?클래스는객체의변수와함수를정의하는템플릿이며,이에따라변수로표현되는데이터영역과이러한데이터영역에접근할수있는함수로구성됩니다.클래스내에정의된변수를멤버변수(member variable)라고하고함수를메쏘드(method)라고합니다.C++과같은객체지향언어에서는멤버변수를데이터멤버,메쏘드를멤버함수라고호칭합니다.PHP에서클래스를사용하는것은 C++또는자바와거의비슷합니다.클래스정의클래스를정의(class definition)할때는키워드"class"를사용합니다.클래스를구성하는멤버변수와메쏘...
  • 웹지기 09-11 5824 0 0 댓글 0
  • 15 [ php ] 이미지 직접 링크 막기
  • .htaccess 파일에 추가해서 사용SetEnvIfNoCase Referer "^http://www.mydomain.com/" locally_linked=1SetEnvIfNoCase Referer "^http://www.mydomain.com$" locally_linked=1SetEnvIfNoCase Referer "^http://mydomain.com/" locally_linked=1SetEnvIfNoCase Referer "^ht...
  • 웹지기 09-11 4465 0 0 댓글 0
  • 14 [ php ] 주차 , 요일, 해당주의 시작일, 해당주의 종료일 date()
  • //해당요일 $dayOfTheWeek = date('w',mktime(0,0,0,$month,$day,$year));$dayOfTheWeek1 = date('w',strtotime($year.$month.$day)); //주차구하기$week = date('W',mktime(0,0,0,$month,$day,$year));$week1 = date('W',strtotime($year.$month.$day));//해당주차의 시작일$sd = mktime(0,0,0,$month,$day-$dayOfThe...
  • 웹지기 09-11 9246 0 0 댓글 0
  • 13 [ php ] 해당 년도의 주차별 시작일 종료일 구하기
  • //해당년도의 주차별 시작일 종료일구하기//yearToWeek(2015) 배열로 저장(overlap을 false로 하면 52주 53주의 중복)function yearToWeek($year,$overlap=true){ $k = 0; $allWeek = array(); for($i=1; $i&lt;=12;$i++) { $sa = mktime(0,0,0,$i,1,$year); $ea = mktime(23,59,59,$i,date("t",$sa),$year);...
  • 웹지기 09-11 5007 0 0 댓글 0
  • 11 [ php ] ajax 한글 깨짐 방지
  • 한글깨짐방지encodeURIComponent(전송값) - $전송값 = iconv("UTF-8", "CP949", rawurldecode(($_POST['전송값'])));data: { "reg_mb_id": encodeURIComponent($(this).val())},와 같은 형태로 전송php 페이지로 받기$reg_mb_id = iconv("UTF-8", "CP949", rawurldecode(($_POST...
  • 웹지기 09-11 6056 0 0 댓글 0
  • 10 [ php ] 문자 또는 숫자를 ○ 로 변경(특정문자 안보이게 가릴때)
  • 특정문자를 안보이게 가리거나 숨겨야 할 때 사용하는 방법 UTF-8 기준입니다. 참고로 막 패턴입니다. $str = substr($str, 0, -3)."○"; echo preg_replace('/.(?!.)/u','○','홍길동'); // 홍길○ echo preg_replace('/.(?=.)/u','○','홍길동'); // ○○동 echo preg_replace('/.(?!..)/u','○','홍길동'); // 홍○○ echo preg_replace('/.(?=...
  • 웹지기 09-11 4328 0 0 댓글 0
  • 9 [ php ] 두 임의 정밀도 더하기,빼기, 곱하기, 나누기, 비교 함수들
  • 두 임의 정밀도 수를 더하기,빼기, 곱하기, 나누기, 비교 함수들링크는 각각 함수 클릭bcadd() -두 임의 정밀도 수 더하기bcsub() - 임의 정밀도 수 빼기bcmul() — 두 임의 정밀도 수 곱하기bcdiv() - 두 임의 정밀도 수 나누기bccomp() — 두 임의 정밀도 수 비교
  • 웹지기 09-10 4806 0 0 댓글 0
  • 8 [ php ] 숫자앞에 0을 넣고 싶을 때
  • 숫자를 반복문이나 나열할 때 숫자가 한자리인데 0을 붙여서 두자리로 만들고 싶을 때1,2,3,4 ==&gt; 01,02,03,04 와 같은 형태로 넣고 싶을 때sprintf를 사용string sprintf ( string $format [, mixed $args [, mixed $... ]] )포맷 문자열 format에 따라 생성한 문자열을 반환합니다.포맷 문자열은 0개 이상의 지시어를 조합합니다: 일반 문자는 (%을 제외하고) 결과에 그대로 복사하고,변환 특정어는 각각의 인수로 교체한 ...
  • 웹지기 09-10 6294 0 0 댓글 0
게시물 검색

회원로그인

접속자집계

오늘
2,297
어제
6,915
최대
33,828
전체
8,106,991

그누보드5
Copyright © funyphp.com. All rights reserved.