Для начала хочу всем пожелать хороших выходных и отличного время провождения! А у меня для Вас завершающая часть по счетчику загрузок файлов, которая в полном объеме информации представлена для вас в видео формате. Перед началом изучения данного материала, советую ознакомиться с первой частью счетчика загрузок файлов, которая вышла неделю назад и там была сделана заготовка.
В данном уроке, я не стану все подробно расписывать, так как для этого есть видео урок. Вкратце, хочу Вам представить только два файла - download.js и download.php, которые работают в связке и образуют запрос методом Ajax.
Для начала нам потребуется создать папку js и в ней создать файл download.js. После этого давайте подключим библиотеку jQuery и файл download.js.
<script type="text/javascript" src="http://code.jquery.com/jquery-1.12.0.js"></script> <script type="text/javascript" src="js/download.js"></script>
Теперь можем приступить к файлу download.js. При обработке событий, мы создаем JQuery документ, который будет передавать при клике параметр counter, что в нашем случае означает запись в поле download. Хочу заметить и обратить ваше внимание на тот момент, что мы используем метод split для разделения межстрочной ссылки, так как она ведь разделяется слешами. При передаче Ajax запросом, нужны следующие параметры: url - адрес запрашиваемой страницы, type - каким методом передаются данные серверу: POST или GET, data - своего рода данные, которые передаются на запрашиваемую страницу.
Не забываем также про метод setTimeout, который позволяет нам немного замедлить процесс скачивания файла для локальных серверов, ведь там считай задержки нет никакой, поэтому скрипт не успевает среагировать на момент загрузки. Следовательно, без данного метода не обойтись. В параметр location, мы прописываем полный путь к файлам загрузки.
jQuery(document).ready(function($) { $(".counter").on('click',function(event) { var counter = $(this).attr('href'); counter = counter.split('/'); event.preventDefault(); $.ajax( { url:'download.php', type:'post', data:{counter:counter[counter.length-1]} }); setTimeout(function () { location= "http://"+document.domain+ "/counter_loadings_files/files/" + counter[counter.length-1]; }, 1000); }); });
Кстати, хотелось бы отметить, что если Вам потребуется каким-либо образом проверить отправку запросов, то можете в Ajax запрос вставить следующую функцию, которая может выдавать Вам результат отправки. Во втором шаге, в коде php, я расскажу Вам, что будет сюда приходить. К примеру, вместо "все передалось" - пропишите alert(res);
success:function(res){ //Все передалось }, error:function(){ //Ничего не передалось }
Переходим ко второму шагу и тут нам предстоит заняться файлом download.php, который в свое время принимает какой-либо результат от файла download.js. Первым делом подключаемся к базе данных, а далее уже принимаем методом POST сам запрос, а именно к нам отправлялся параметр counter. Далее обновляем значение поля download в базе данных, но как Вы можете заметить, данный подход абсолютно не правильный, так как нет ни одной проверки.
<? include"mysql.php"; if(isset($_POST['counter'])){$counter = trim(filter_input(INPUT_POST,'counter',FILTER_SANITIZE_SPECIAL_CHARS));} $sql = $pdo->prepare("UPDATE materials SET download = download + 1 WHERE files=:counter"); $sql->execute(array(':counter'=>$counter)); ?>
Поэтому запрос, стоит немного переписать, чтобы он имел правильную структуризацию по приеме передаваемых данных. Возможно, вы уже могли догадаться, что нам потребуется условие, которое будет основываться на передаваемой переменной counter.
if(isset($counter)){ $sql = $pdo->prepare("UPDATE materials SET download = download + 1 WHERE files=:counter"); $sql->execute(array(':counter'=>$counter)); echo 'Ваш файл успешно загружен!'; } else{ echo"Не удалось скачать файл!"; }
Вот и получился у нас скрипт счетчика загрузок файлов, который спокойно подойдет Вам для интеграции в свой проект. Следующий мой скрипт выйдет через неделю, может раньше в среду-пятницу на тему API в контакте. А на этом все, всем удачи и большое спасибо за проявленное внимание!