понедельник, 21 мая 2018 г.

Ежедневный бонус на AJAX. Инструкция


Рассмотрим работу AJAX, простой пример. Позволим нашим пользователям получать бонусы без обновления страницы и с передачей информационных сообщений.



Первым делом подключим необходимую библиотеку. Лучше в файл /inc/_header.php:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Откроем стандартный файл бонусов /pages/account/_bonus.php:

1. Убираем обработчик события. Можно оставить комментарии для этого /* и */. Смотри скриншот ниже, как должно получиться:



Однако, запрос, выделенный желтым нам пригодится. Скопируем его и поставим его ниже нашего комментария.


Далее, найдем нашу форму получения бонуса и сотрем ее полностью. Она нам не понадобится. Вот форма:



 Вместо нее установим кнопку. Всего одну. И ниже поставим SPAN, для вывода сообщения:

<button id="bonusform" name="bonus">Получить бонус</button><br>
<span class="mess" id="err"></span>


В самое начала стандартного файла бонуса поставим наш код JS обработки AJAX:

<script type="text/javascript">
    $(document).ready(function(){
            $("#bonusform").click(function() {
                $.ajax({
                    url: "../ajax/ajaxbonus.php",
                    type: "POST",
                    success: function(data){
                    if (data) {
                    $("#err").text(" "+data+" ").show().delay(3000).fadeOut(450);
                    $('#refr_table').load('# #refr_table');
                  
                    }else {
                        $("#err").text("ошибка 2");
                    }
                    },
                    error: function(){          
                alert("Данные не переданы!");          
                }
                });
              
            });
    });
</script>


Чуть пониже подключим стиль для нашего SPAN:

<style>
.mess {color: red;text-lign:center;}
</style>


Для того, чтобы данные в нашей таблице обновлялись так же без перезагрузки, нам нужно присвоить id для таблицы, которая выводит результаты. В Ajax мы уже производим это обновление. Найдем тег <table и добавим параметр id="refr_table".

Осталось создать обработчик события в PHP. Для этого создадим файл с именем ajaxbonus.php, со своей необходимой кодировкой, поместим его в папку Ajax, обычно там лежат файлы серфинга и игры кнб (если папки нет, то создаем). Вставляем в файл нижеприведенный код:

<?
session_start();
$usid=$_SESSION['user_id'];
$user=$_SESSION['user'];


function __autoload($name){ include($_SERVER['DOCUMENT_ROOT']."/classes/_class.".$name.".php");}
$config = new config;
$db = new db($config->HostDB, $config->UserDB, $config->PassDB, $config->BaseDB);

$ddel = time() + 86400;
$dadd = time();
$db->Query("SELECT COUNT(*) FROM db_bonus_list WHERE user_id = '".$_SESSION['user_id']."' AND date_del > '$dadd'");
if($db->FetchRow() == 0){
   

    $sum = rand(10, rand(10, 20) );
    //echo $sum;
    $db->Query("UPDATE db_users_b SET money_b = money_b + '$sum' WHERE id = '20'");
    $db->Query("INSERT INTO db_bonus_list (user, user_id, sum, date_add, date_del) VALUES ('".$_SESSION['user']."','".$_SESSION['user_id']."','$sum','$dadd','$ddel')");
    echo "Вы успешно получилии бонус в размере ".$sum." серебра!";
} else echo "Вы уже получали бонус за последние 24 часа!";
?>


На этом все! Попробуйте, если не получится - пишите!
ДЕМО (не забудьте зарегистрироваться)



Комментариев нет:

Отправить комментарий