Рассмотрим работу 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 часа!";
?>
На этом все! Попробуйте, если не получится - пишите!
ДЕМО (не забудьте зарегистрироваться)
Комментариев нет:
Отправить комментарий