ВОПРОС Несколько промо-кодов

cristian2307

Местный
Здравствуйте, что мне сделать, чтобы промокод работал более чем на 1 активацию разными пользователями?

Пример 10 разных пользователей могут активировать один и тот же код, после чего срок его действия истечет.

PHP:
<?PHP include("pages/admin/head/_head_gl.php");?>

  <div class="content">
        <div class="header">
      

            <h1 class="page-title">Промокоды</h1>
                    

        </div>
        <div class="main-content">
 
 

    



<div class="panel panel-default" >

      





<?PHP
if (!defined('AlexMoon') || AlexMoon !== true) { Header('Location: /404'); return; }

$create_by_users = false; // Разрешать ли пользователям создавать промокоды
$view_all = true; // false отображаються только не активированные пинкоды (true все)

$product = array("money_p"=>"Для вывода",
                "money_b"=>"Для покупок",
                "money_s"=>"Для рекламы"
                );





 $db->Query("SELECT * FROM db_config WHERE id = '1' LIMIT 1");
 $sonfig_site = $db->FetchArray();
?>
 
<div class="silver-bk">
<br>
<?
if(isset($_POST['type'])) {
    $type = strval($_POST['type']);
    $count = intval($_POST['count']);
    $usid = isset($_SESSION['user_id']);
    $gen = rand(1000000000, 9999999999).'t'.time();
    $gen_md = md5($gen);
    $key_md = strtoupper(substr($gen_md,0,25));
    $key = implode('-',str_split($key_md,5)); // Генерируем промокод
    
    if(!isset($_SESSION['admin'])){ // У админа ничего не списываем
        if($type!=='0'){
            if($user_data[$type]>=$count){
                $db->Query("UPDATE db_users_b SET {$type} = {$type} - {$count} WHERE id = '$usid'"); // Списываем элемен у пользователя
                $db->Query("INSERT INTO db_promocod (user_id, code, element, summa, status) VALUES ('$usid', '$key', '$type', '$count', '0')"); //  Записываем промокод в бд
                echo "<center><b><font color='green'>Вы создали промокод ($key)</font></b></center><BR />";
            }else echo "<center><b><font color='red'>Выбраного элемента не достаточно для создания промокода.</font></b></center><BR />";
        }else echo "<center><b><font color='red'>Неизвестный элемент!</font></b></center><BR />";
    }else{
        $db->Query("INSERT INTO db_promocod (user_id, code, element, summa, status) VALUES ('$usid', '$key', '$type', '$count', '0')"); //  Записываем промокод в бд
        echo "<center><b><font color='green'>Вы создали промокод ($key)</font></b></center><BR />";
    }
}



?>

<?PHP
if( $create_by_users || isset($_SESSION['admin'])){
?>
<table class="promocod_table" style="width:100%; background-image: none; text-align: center; border: 1px solid #dcdcdc !important;">
    <tbody>
        <tr style="line-height: 22px;background-color: #ececec !important;font-weight: bold;" class="title">
            <td style="color:#707070;text-align:center; border-radius:0px; margin-right:0px;">Создать Промокод</td>
        </tr>
        <tr>
            <td>
                <form action="" name="create" method="POST">
                    <select name="type" onchange="getCenaProdati()" style="margin-top:2px; width:100%;">
                        <option value="0" selected="selected">Выбрать элемент для создания промокода</option>
                        <?
                            foreach($product as $k=>$v){
                                echo '<option value="'.$k.'">'.$v.'</option>';
                            }
                        ?>
                    </select>
                    <input name="count" value="" placeholder="Количество" style="margin-top:2px; width:100%;">
                    <input type="submit" value="Создать" style="margin-top:2px; width:100%;">
                </form>
            </td>
        </tr>
    </tbody>
</table><br>
<table class="promocod_table" style="width:100%; background-image: none; text-align: center; border: 1px solid #dcdcdc !important;">
    <tbody>
        <tr style="line-height: 22px;background-color: #ececec !important;font-weight: bold;" class="title">
            <td colspan="5" align="center" style="color:#707070;text-align:center; border-radius:0px; margin-right:0px;">Созданые промокоды</td>
        </tr>
        <tr>
            <td align="center" class="m-tb">Промокод</td>
            <td align="center" class="m-tb">Элемент</td>
            <td align="center" class="m-tb">Сумма</td>
            <td align="center" class="m-tb">Статус</td>
        </tr>
        <?PHP
        $usid = 'user_id';
        $db->Query("SELECT * FROM db_promocod WHERE user_id = '$usid'".($view_all==false ? " AND status='0'":"")." ORDER BY id DESC");
        
        if($db->NumRows() > 0){
      
            while($promo_data = $db->FetchArray()){
        ?>
        <tr class="htt">
            <td align="center"><?=$promo_data["code"]; ?></td>
            <td align="center"><?=$product[$promo_data["element"]]; ?></td>
            <td align="center"><?=$promo_data["summa"]; ?></td>
            <td align="center"><?=($promo_data["status"]==0 ? "Рабочий":"Активирован"); ?></td>
          </tr>
        <?PHP
            }
        }else echo '<tr><td align="center" colspan="5">Нет промокодов</td></tr>'
        ?>
    </tbody>
</table>
<?
}
?>
<div class="clr"></div>   


</div>
                
        </div>
        
    </div>





 
  <?PHP include("pages/admin/foot/_foot_gl.php");?>
 

cristian2307

Местный
SQL:
CREATE TABLE IF NOT EXISTS `db_promocod` (
  `id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL DEFAULT '0',
  `code` varchar(50) NOT NULL DEFAULT 'XXXXX-XXXXX-XXXXX-XXXXX-XXXXX',
  `element` varchar(55) NOT NULL,
  `summa` int(11) NOT NULL DEFAULT '0',
  `status` int(11) NOT NULL DEFAULT '0'
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=cp1251;
 

cristian2307

Местный
Спасибо, пересмотрел и после пары доработок добился того, чего так хотел! задача решена.
 
Верх