반응형

 

 

우선 쿠폰 리스트 페이지를 만들고 쿠폰 등록페이지부터 시작해보자. 

 

/admin/coupon/coupon_list.php

<?php
include $_SERVER["DOCUMENT_ROOT"]."/inc/header.php";
if(!$_SESSION['AUID']){
  echo "<script>alert('권한이 없습니다.');history.back();</script>";
  exit;
}

$pageNumber  = $_GET['pageNumber']??1;//현재 페이지, 없으면 1
if($pageNumber < 1) $pageNumber = 1;
$pageCount  = $_GET['pageCount']??10;//페이지당 몇개씩 보여줄지, 없으면 10
$startLimit = ($pageNumber-1)*$pageCount;//쿼리의 limit 시작 부분
$firstPageNumber  = $_GET['firstPageNumber'];
$search_keyword=$_GET["search_keyword"];

if($search_keyword){
    $search_where.=" and (coupon_name like '%".$search_keyword."%')";//like 검색으로 검색
}

$sql = "select * from coupons c where 1=1";
$sql .= $search_where;
$order = " order by cid desc";//마지막에 등록한걸 먼저 보여줌
$limit = " limit $startLimit, $pageCount";
$query = $sql.$order.$limit;
//echo "query=>".$query."<br>";
$result = $mysqli->query($query) or die("query error => ".$mysqli->error);
while($rs = $result->fetch_object()){
    $rsc[]=$rs;
}

//전체게시물 수 구하기
$sqlcnt = "select count(*) as cnt from coupons where 1=1";
$sqlcnt .= $search_where;
$countresult = $mysqli->query($sqlcnt) or die("query error => ".$mysqli->error);
$rscnt = $countresult->fetch_object();
$totalCount = $rscnt->cnt;//전체 갯수를 구한다.
$totalPage = ceil($totalCount/$pageCount);//전체 페이지를 구한다.

if($firstPageNumber < 1) $firstPageNumber = 1;
$lastPageNumber = $firstPageNumber + $pageCount - 1;//페이징 나오는 부분에서 레인지를 정한다.
if($lastPageNumber > $totalPage) $lastPageNumber = $totalPage;



?>
<div style="text-align:center;"><h3>쿠폰 리스트</h3></div>

    <form method="get" action="<?php echo $_SERVER["PHP_SELF"]?>">
       
        <div class="input-group mb-4">
            <input class="form-control me-2" type="search"  name="search_keyword" id="search_keyword" placeholder="제목에서 검색합니다." aria-label="Search" value="<?php echo $search_keyword;?>">
            <button class="btn btn-outline-dark" type="submit">Search</button>
        </div>
       
    </form>
       
        <table class="table table-sm table-bordered">
          <thead>
          <tr style="text-align:center;">
            <th scope="col">사진</th>
            <th scope="col">쿠폰명</th>
            <th scope="col">쿠폰타입</th>
            <th scope="col">할인가</th>
            <th scope="col">할인율</th>
            <th scope="col">최소사용금액</th>
            <th scope="col">최대할인금액</th>
            <th scope="col">등록자</th>
            <th scope="col">상태</th>
          </tr>
          </thead>
          <tbody>
          <?php
        foreach($rsc as $r){
        ?>
          <tr>
            <th scope="row" style="width:200px;"><img src="<?php echo $r->coupon_image;?>" style="max-width:100px;"></th>
            <td><?php echo $r->coupon_name;?></td>
            <td><?php echo $r->coupon_type;?></td>
            <td style="text-align:right;"><?php echo number_format($r->coupon_price);?></td>
            <td style="text-align:right;"><?php echo number_format($r->coupon_ratio);?>%</td>
            <td style="text-align:right;"><?php echo number_format($r->use_min_price);?></td>
            <td style="text-align:right;"><?php echo number_format($r->max_value);?></td>
            <td><?php echo $r->userid;?></td>
            <td><?php echo $r->status;?></td>
          </tr>
          <?php }?>
          </tbody>
        </table>

        <a href="coupon_up.php">
            <button class="btn btn-primary" type="button">쿠폰등록</button>
        </a>
       
        <!-- Modal -->

<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">        
<script>
    $(function(){
        $("#sale_end_date").datepicker({ dateFormat: 'yy-mm-dd' });
    });

     
</script>
<?php
include $_SERVER["DOCUMENT_ROOT"]."/inc/footer.php";
?>

간단하게 만들었다. 기존에 다른 페이지를 가져와서 대충 수정해주면 된다.이런 페이지를 처음부터 새롭게 만드는 사람은 없다.

 

이번엔 등록페이지도 만들어보자.

/admin/coupon/coupon_up.php

<?php
include $_SERVER["DOCUMENT_ROOT"]."/inc/header.php";
if(!$_SESSION['AUID']){
    echo "<script>alert('권한이 없습니다.');history.back();</script>";
    exit;
}

?>
<style>
    .thst{
        text-align: center;
    vertical-align: middle;
    }
</style>
 
        <div style="text-align:center;padding:20px;"><H3>쿠폰등록하기</H3></div>
<form method="post" action="cupok.php" onsubmit="return save()" enctype="multipart/form-data">        
        <table class="table table-sm table-bordered">
          <tbody>
            <input type="hidden" name="file_table_id" id="file_table_id" value="">
            <input type="hidden" name="contents" id="contents" value="">
           
         
          <tr>
            <th scope="row" class="thst">쿠폰명</th>
            <td><input type="text" class="form-control" name="coupon_name" id="coupon_name" required></td>
          </tr>
          <tr>
            <th scope="row" class="thst">쿠폰이미지</th>
            <td><input type="file" class="form-control" name="coupon_image" id="coupon_image"></td>
          </tr>
          <tr>
            <th scope="row" class="thst">쿠폰타입</th>
            <td>
                <select class="form-select" name="coupon_type" id="coupon_type" aria-label="Default select example">
                    <option value="1">정액</option>
                    <option value="2">정율</option>
                </select>
            </td>
          </tr>
          <tr id="ct1">
            <th scope="row" class="thst">할인가</th>
            <td>
            <div class="input-group">
              <input type="text" style="width:200px;text-align:right;" class="form-control" name="coupon_price" id="coupon_price" value='0'>
              <span class="input-group-text"></span>
            </div>
          </td>
          </tr>
          <tr id="ct2" style="display:none;">
            <th scope="row" class="thst">할인비율</th>
            <td>
            <div class="input-group">  
              <input type="text" style="width:200px;text-align:right;" class="form-control" name="coupon_ratio" id="coupon_ratio" value='0'>
              <span class="input-group-text">%</span>
            </div>
            </td>
          </tr>
          <tr>
            <th scope="row" class="thst">최소사용금액</th>
            <td>
              <div class="input-group">    
              <input type="number" style="width:200px;text-align:right;" class="form-control" name="use_min_price" id="use_min_price">
              <span class="input-group-text"></span>
              </div>
            </td>
          </tr>
          <tr>
            <th scope="row" class="thst">최대할인금액</th>
            <td>
            <div class="input-group">  
            <input type="number" style="width:200px;text-align:right;" class="form-control" name="max_value" id="max_value">
            <span class="input-group-text"></span>
            </div>
          </td>
          </tr>

          <tr>
            <th scope="row" class="thst">상태</th>
            <td>
                <select class="form-select" name="status" id="status" aria-label="Default select example">
                    <option value="1">대기</option>
                    <option value="2">사용중</option>
                    <option value="3">폐기</option>
                </select>
            </td>
          </tr>
          </tbody>
        </table>
       
        <button class="btn btn-primary" type="submit">등록완료</button>
</form>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script>

    $("#coupon_type").change(function(){
        var ct1 = $("#coupon_type option:selected").val();
       
        if(ct1==1){
          $("#ct1").show();
          $("#ct2").hide();
        }else if(ct1==2){
          $("#ct2").show();
          $("#ct1").hide();
        }else{
          $("#ct1").show();
          $("#ct2").hide();
        }
    });

    function save(){

        if(!$('#coupon_image').val()){
            alert('썸네일을 등록하십시오.');
            return false;
        }


    }



</script>    
<?php
include $_SERVER["DOCUMENT_ROOT"]."/inc/footer.php";
?>

아주 심플하다. 쿠폰타입에서 정액과 정율을 선택하는 것에 따라 입력하는 컬럼을 바꿔주었다. 이제 여기서 입력한 값을 디비에 저장해보자.

 

/admin/coupon/cupok.php

<?php session_start();
include $_SERVER["DOCUMENT_ROOT"]."/inc/dbcon.php";
ini_set( 'display_errors', '0' );

if(!$_SESSION['AUID']){
    echo "<script>alert('권한이 없습니다.');history.back();</script>";
    exit;
}


$coupon_name=$_POST["coupon_name"];//쿠폰명
$coupon_type=$_POST["coupon_type"];//쿠폰타입
$coupon_price=$_POST["coupon_price"];//할인가
$coupon_ratio=$_POST["coupon_ratio"];//할인율
$status=$_POST["status"];//상태
$max_value=$_POST["max_value"];//최대할인금액
$use_min_price=$_POST["use_min_price"];//최소사용가능금액

if($_FILES["coupon_image"]["name"]){//첨부한 파일이 있으면

        if($_FILES['coupon_image']['size']>10240000){//10메가
            echo "<script>alert('10메가 이하만 첨부할 수 있습니다.');history.back();</script>";
            exit;
        }

        if($_FILES['coupon_image']['type']!='image/jpeg' and $_FILES['coupon_image']['type']!='image/gif' and $_FILES['coupon_image']['type']!='image/png'){//이미지가 아니면, 다른 type은 and로 추가
            echo "<script>alert('이미지만 첨부할 수 있습니다.');history.back();</script>";
            exit;
        }

        $save_dir = $_SERVER['DOCUMENT_ROOT']."/pdata/";//파일을 업로드할 디렉토리
        $filename = $_FILES["coupon_image"]["name"];
        $ext = pathinfo($filename,PATHINFO_EXTENSION);//확장자 구하기
        $newfilename = "CPN_".date("YmdHis").substr(rand(),0,6);
        $coupon_image = $newfilename.".".$ext;//새로운 파일이름과 확장자를 합친다
       
        if(move_uploaded_file($_FILES["coupon_image"]["tmp_name"], $save_dir.$coupon_image)){
            $coupon_image = $_CONFIG["CDN_SERVER"]."/pdata/".$coupon_image;
        }else{
            echo "<script>alert('이미지를 등록할 수 없습니다. 관리자에게 문의해주십시오.');history.back();</script>";
            exit;
        }

}

$mysqli->autocommit(FALSE);//커밋이 안되도록 지정

try {

    $query="INSERT INTO testdb.coupons
    (coupon_name, coupon_image, coupon_type, coupon_price, coupon_ratio, status, regdate, userid, max_value, use_min_price)
    VALUES('".$coupon_name."'
    , '".$coupon_image."'
    , '".$coupon_type."'
    , '".$coupon_price."'
    , '".$coupon_ratio."'
    , '".$status."'
    , now()
    , '".$_SESSION['AUID']."'
    , '".$max_value."'
    , '".$use_min_price."'
    )";

    $rs=$mysqli->query($query) or die($mysqli->error);
    $pid = $mysqli -> insert_id;

    $mysqli->commit();//디비에 커밋한다.

    echo "<script>alert('등록했습니다.');location.href='/admin/coupon/coupon_list.php';</script>";
    exit;

}catch (Exception $e) {

    $mysqli->rollback();//저장한 테이블이 있다면 롤백한다.

    echo "<script>alert('등록하지 못했습니다. 관리자에게 문의해주십시오.');history.back();</script>";
    exit;

}


?>

아주 간단하게 만들었다. 쿠폰은 쿠폰 등록이 중요한게 아니니까.

 

다음엔 쿠폰을 사용자에게 발행하는 것을 해보자. 회원가입을 하거나 로그인을 하거나 이벤트에 참여하거나 몇만원이상 구매를 하거나 하는 경우 말이다.

 

반응형

+ Recent posts