Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

डिस्काउंट कोड सिस्टम बनाना (MySQL/php)

यह अनिवार्य रूप से एक वर्ग की कार्यक्षमता है, वास्तव में। आपको एक क्लास इंटरफ़ेस की आवश्यकता होगी जो इस तरह दिखाई देगा

 class ProductDiscount {
   /**
    * Create a NEW discount code and return the instance of
    *
    * @param $code string      the discount code
    * @param $discount float   price adjustment in % (ex:        
    * @param $options array    (optional) an array of options :
    *                            'expire'   => timestamp    (optional)
    *                            'limited'  => int          (optional)
    * @return ProductDiscount                         
    */
   static public function create($code, $discount, $options = NULL);

   /**
    * This essentially validate the code, and return the instance of the
    * discount if the code exists. The method returns null if the discount 
    * is not valid for any reason. If an instance is returned, to apply
    * the discount, one should invoke the "consume()" method of the instance.
    *
    * @param $code string
    *
    * @return ProductDiscount|null
    */
   static public function validate($code);

   private $_code;     // string
   private $_discount; // float
   private $_expire;   // unix timestamp (see time()) or null if unlimited
   private $_count;    // int or null if unlimited

   private function __construct();
   public function getCode();      // return string
   public function getDiscount();  // return float
   public function isLimited();    // return bool; true if $_count || $_expire is not null
   public function getCount();     // returns int; how many of this discount is left or null if unlimited
   public function getExpireDate();// returns int (unix timestamp) or null if unlimited

   public function consume();      // apply this discount now

   public function consumeAll();   // invalidate this discount for future use
}

DB तालिका इस तरह दिख सकती है

id UNSIGNED INT(10) NOT NULL AUTOINCREMENT  -- (Primary Key)
code VARCHAR(12) NOT NULL                   -- (Indexed, unique)
discount UNSIGNED INT(3) NOT NULL           -- percent value 0..100
expire DATETIME DEFAULT NULL                -- unlimited by default
count INT(10) DEFAULT 1                     -- can be NULL

नोट : सत्यापन प्रक्रिया बस एक साधारण SELECT हो सकती है कथन:

SELECT * 
  FROM tblproductdiscount
 WHERE code = {$code}                  -- $code = mysql_real_escape_string($code)
   AND (count IS NULL OR count > 0)
   AND (expire IS NULL or expire > NOW())

फिर चेकआउट फॉर्म को मान्य करते समय बस इस वर्ग का उपयोग करें। उदाहरण के लिए,

if (!empty($discountCode)) {
   $discount = ProductDiscount::validate($discountCode);

   if ($discount !== null) {
      $price *= (1 - $discount->getDiscount());
      $discount->consume();
   }
}

खैर, मैं इसे कुछ इस तरह से करूँगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLAlchemy में तेज करने के लिए गतिशील रूप से __tablename__ सेट करना?

  2. डेटाबेस से कनेक्ट नहीं हो सकता (000webhost)

  3. संस्करण संख्या की mysql छँटाई

  4. mysql को समझना

  5. बड़ी sql फ़ाइल आयात करते समय MySQL सर्वर चला गया है