Добрый вечер, уважаемые читатели! Не знал, какой материал лучше подготовить из двух вариантов для Вас, а именно, что-нибудь про API в социальной сети ВКонтакте, как например, - скрипт проверки пользователя в сообществе ВКонтакте или же что-то другое. Ну как Вы, возможно, уже поняли, речь пойдет сегодня о счетчике загрузок файлов. Решил данный материал разбить на две части - заготовка и полностью весь скрипт.
Почему же все-таки на две? Да подумал, может к началу второй части у Вас будут какие-либо пожелания, независимо от того, что я собираюсь для Вас подготовить и выпустить. Если же комментариев не будет, то выпущу то, что подготовил и опять также в видео формате, ну и конечно же в текстовом формате тоже. А теперь, всем советую посмотреть демо и понять, что же будет. Как видно на демо или на изображении ниже, что для реализации данного скрипта нам потребуется база данных, файлы для скачивания, ну и конечно же PHP, HTML и CSS код.
Для начала создаем базу данных и назовем ее download, с привилегиями пользователя - 'root' и паролем - ''.
Нам потребуется всего одна таблица materials, в которой мы будем хранить четыре поля:
-- -- Структура таблицы `materials` -- CREATE TABLE IF NOT EXISTS `materials` ( `id` int(10) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `files` varchar(255) NOT NULL, `download` int(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
-- -- Дамп данных таблицы `materials` -- INSERT INTO `materials` (`id`, `title`, `files`, `download`) VALUES (1, 'Первая запись', 'rh_logo_white.rar', 1), (2, 'Вторая запись', 'rh_logo_black.rar', 0);
-- -- Структура таблицы `materials` -- CREATE TABLE IF NOT EXISTS `materials` ( `id` int(10) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `files` varchar(255) NOT NULL, `download` int(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; -- -- Дамп данных таблицы `materials` -- INSERT INTO `materials` (`id`, `title`, `files`, `download`) VALUES (1, 'Первая запись', 'rh_logo_white.rar', 1), (2, 'Вторая запись', 'rh_logo_black.rar', 0);
Переходим ко второму шагу и для начала подключим стили CSS.
<link type="text/css" rel="stylesheet" href="css/demo.css">
Теперь, давайте, реализуем вывод таблицы materials, но сначала нам нужно подключиться к базе данных. Для этого мы будем использовать PDO. В переменной $bd мы будем хранить базу данных MySQL и укажем ей хост, в нашем случае localhost. В переменную $user, мы записываем нашего пользователя - 'root' и, соответственно, в переменную $password наш пароль, который пустой - ''.
Далее нам потребуются исключения, в первый блок try мы записываем переменные, которые адресуются к PDO, если все проходит хорошо, то мы успешно подключаемся к базе данных, если же нет, то нам выводится второй блок исключений catch, показывающий ошибку.
<?php $bd = "mysql:dbname=download;host=localhost"; $user = 'root'; $password = ''; try{ $pdo = new PDO($bd,$user,$password); $pdo->exec('SET NAMES utf8'); } catch(PDOException $e){ echo 'Ошибка :'.$e->getMessage(); } ?>
Теперь переходим к созданию таблицы HTML и выводим всем поля из таблицы materials, а именно нам потребуются три поля: ссылка на файл - поле files, название - поле title и количество загрузок - поле download. Надеюсь, реализация данного запроса посредством PDO Вам понятна и не вызовет каких-либо трудностей.
<table> <thead> <tr> <th>Ссылка на файл</th> <th>Название записи</th> <th>Количество загрузок</th> </tr> </thead> <tbody> <?php $sqlDownload = "SELECT * FROM materials"; $sql = $pdo->query($sqlDownload); $res = $sql->fetch(PDO::FETCH_BOTH); do{ ?> <tr> <td><a class="counter" href="files/<?=$res['files']?>">Скачать файл</a></td> <td><?=$res['title'];?></td> <td><?=$res['download'];?></td> </tr> <? } while($res = $sql->fetch(PDO::FETCH_BOTH)); ?> </tbody> </table>
Решил немного оформить таблицу HTML, поэтому давайте пропишем следующие стили.
table{ width: 600px; text-align: left; } thead{ background: #000; color: #FFF; } th, td{ padding: 5px; }
На этом заготовка счетчика загрузок файла окончена, ждите вторую часть счетчика загрузок файлов, в которой весь скрипт уже будет работать полностью. Жду от Вас комментариев, если какие идеи возникнут или просьбы, готов выслушать и попробовать во второй части реализовать. Спасибо большое за внимание!)