Мини движок на PHP для вывода данных из базы AMM в HTML

Описание: Вопросы, связанные с каталогизатором фильмов All My Movies
Модераторы: datasource, Автор

ynkas M
Опытный пользователь
Аватара
ynkas M
Опытный пользователь
Репутация: 235
С нами: 15 лет 9 месяцев
Откуда: Россия, Москва

Сообщение #1 ynkas » Пт января 15, 2010 6:47 pm

Нужно мне было как-то показать знакомым свою базу фильмов,
для этого нужно либо устанавливать программу, на что не каждый согласиться,
по себе знаю :-) либо выводить в какой-либо шаблон, к сожалению ни один меня совершенно
не устроил по функционалу и удобности...

Задался я целью выцепить все данные из базы и вывести в HTML в наиболее удачный, на мой взгляд,
шаблон от amm - indian...

Что из этого вышло можно увидеть тут
В IE8, Mozila Firefox 3.5, Goole Chrome все эффекты работают, в других браузерах не проверял...

Если кого заинтересует как это реализовать напишу небольшую инструкцию и выложу сам движок, в настройке ничего сложного нет :-)
И что удобно - можно запускать с USB носителя на любом ПК без установки софта, а если есть прямой IP, то и вовсе USB носитель не нужен.

Для начала нужно установить готовый сервер Vertrigo (присутствует в комплекте) или Denwer,
ну или установить и настроить связку Apache и PHP...

Описываю способ с Vertrigo, так как он в комплекте и его можно переносить на USB носителях,
Denwer вроде тоже можно, не помню да и лень искать инфу или пробовать, кому интересно сам попробует )).
После установки Vertrigo кидаем содержимое папки "www" и папки "Тестовая_база"
(или свою базу, предварительно выгрузив из нее картинки и переименовав как в папке "Тестовая_база")
в папку "www" вашего сервера.

Чтобы избежать проблем с кодировкой, в папке www создаем файлик .htaccess и копируем в него строчку

Код: Выделить всё

AddDefaultCharset Windows-1251

Если не вкурсе, создается в блокноте, сохранятеся и переименовывается в .htaccess без каких либо расширений на конце.

Далее заходим в "Панель управления\Администрирование\Источники данных (ODBC)" заходим
во вкладку Системный DSN добавляем драйвер для Microsoft Access (*.mdb) в открывшемся окошке
вводим имя базы данных "mydb" без кавычек, либо свое имя, но потом придется править файл blocks/db.php,
нажимаем на кнопку "Выбрать..." тип файлов: выбираем Все файлы (*.*) в правом окошке выбираем
"ваш диск:\директория установки\VertigoServ\www"
в левом окоше выбираем файл "mydb[1].amm" жмем ок и еще раз ок, больше тут настраивать ничего не нужно.

Изображение

Изображение

Файл mydb[1].amm в принципе не обязательно держать в папке www,
но тогда после очередной правки базы придется вручную переносить папку с jpg в папку www, а mydb[1].amm в другое выбранное место, а если настроить каждый день бэкап базы в папку www, то ничего переносить вручную никуда не надо. И если переименуете свою базу в mydb.amm, то после бэкапа она примет вид mydb[1].amm и переименовывать тоже ничего не надо будет. В итоге после изменений в базе на сайте это отобразится после бэкапа, в моем случае через сутки...


Если винда 64 битная то "Источники данных (ODBC)" запускать нужно по этому пути -->
C:\Windows\SysWOW64\odbcad32.exe, иначе не будет выбора драйвера для Microsoft Access (*.mdb).

Теперь осталось открыть 80й порт в брандмауэре и можно запускать Server.
Опишу как открыть в Windows Vista или Windows 7, в XP его можно просто отключить, что проще.
заходим в "Панель управления\Администрирование\Брандмауэр Windows в режиме повышенной безопасности",
создаем правило - правой кнопкой мыши по 1й строчке (Правило для входящих подключений)
Тип правила - Для программы, далее
Программа - "ваш диск:\директория установки\VertrigoServ\Apache\bin\v_apache.exe", далее
Разрешить подключение, далее
Поставить галки на все профили, далее
Задаем имя и жмем Готово...

Запускаем сервер, заходим по адресу http://127.0.0.1 или http://localhost и смотрим результат...
Изображение
Изображение

Update
Исправлена ошибка, не ставились запятые, если в карточке актера не было фото.
Update
Разбил код на доп блоки.
Добавлен вывод информации о видео и аудио.
Добавлен вывод информации о сценаристах.
Добавлен вывод информации о рейтинге MPAA.
SQL-инъекцию прикрыл
Update
Добавлена сортировка по Алфавиту (возрастание/убывание)
Добавлена сортировка по дате (возрастание/убывание)
Update
Переделана структура
Список фильмов перемещен вправо
Подправлена логика вывода при поиске и сортировке
Фильмография актера выводится разборчиво
Update
Обновлен файл css для отображения прокрутки в Mozilla Firefox
Update
Добавлено обновление карточки фильма без перезагрузки страницы,
при клике на фильм из правого списка
Update
Добавлена сортировка по знакам алфавита без перезагрузки страницы
Update
Исправлена проблема с неполным выводом информации из полей Memo (комментариев, описания, биографии, фильмографии)
Update
Добавлен вывод скриншотов, если они есть
Update
Небольшие исправления на странице персон (Убрал лишние переносы строк, вывод строк "Знаете ли вы, что" теперь в читабельном виде)
Update
Добавил вывод эпизодов, + если на странице персоны кликнуть на фильм из списка, список останется и на странице фильма...
Update
Добавил сортировку по году в правом списке
Добавил линк на скачку фильма, локальный путь в карточке фильма должен быть вида: Z:\films\film.mkv,
если скачка производится по тому же порту, средствами того же http сервера, на котором и сама страничка (по умолчанию 80 порт), то необходимо сделать изминение в файле blocks\left_index.php
исправить строку

Код: Выделить всё

$localpath = "http://$ip:8080$localpath";

на

Код: Выделить всё

$localpath = "http://$ip$localpath";

Update
Подправил сортировку по году
Update
Переделал сортировку, добавил новые пункты, поправил мелкие баги
Update
Поправил отображение при сортировке по годам, носителю и жанрам

Комплект с сервером и тестовой базой
Обновленный комплект 28.09.2011 и Зеркало
Только скрипты
www 28.09.2011 и Зеркало
Последний раз редактировалось ynkas Пн апреля 18, 2016 5:04 pm, всего редактировалось 54 раза.

Igor
Пользователь
Igor
Пользователь
Репутация: 0
С нами: 17 лет 6 месяцев

Сообщение #2 Igor » Пт января 15, 2010 10:18 pm

Весьма интересно. Дело за инструкцией и движком осталось :wink:

Maxometr
Опытный пользователь
Maxometr
Опытный пользователь
Репутация: 0
С нами: 15 лет 9 месяцев
Откуда: Питер

Сообщение #3 Maxometr » Пт января 15, 2010 10:26 pm

Поддерживаю, выложите инструкцию и движок

Sentens
Пользователь
Sentens
Пользователь
Репутация: 0
С нами: 14 лет 2 месяца

Сообщение #4 Sentens » Сб января 16, 2010 8:05 pm

Большое спасибо!!! (В закладочки)
P.S.Никак не могу определиться с форматом для домашней коллекции фильмов? Что посоветуете для 1920х1080 (40") в пределах 10-12гб за 1.5 часа. (BD-Rip, DVD-9, HDTV-Rip...????)

ynkas M
Опытный пользователь
Аватара
ynkas M
Опытный пользователь
Репутация: 235
С нами: 15 лет 9 месяцев
Откуда: Россия, Москва

Сообщение #5 ynkas » Сб января 16, 2010 8:22 pm

А не великоват размер ? ))
Разницы практически не заметно между BD-Rip 1080p и 720p на 40"
А в размере очень заметно
Мне кажется оптимально собирать BD-Rip в mkv размером 4-6 Gb в зависимости от длинны фильма

Sentens
Пользователь
Sentens
Пользователь
Репутация: 0
С нами: 14 лет 2 месяца

Сообщение #6 Sentens » Сб января 16, 2010 8:53 pm

А вот из форматов не BD, что предпочтительней? Судя по трекерам, BR выходит через 5-6 лет после выхода фильма минимум.

ynkas M
Опытный пользователь
Аватара
ynkas M
Опытный пользователь
Репутация: 235
С нами: 15 лет 9 месяцев
Откуда: Россия, Москва

Сообщение #7 ynkas » Сб января 16, 2010 9:08 pm

Это вы загнули :)
Сейчас на BR выходит одновременно с DVD :)
А из других форматов например я собираю еще в AVI но с разрешением не меньше 720 x *
Есть отличный сайт где наиболее удачные рипы в AVI, очень рекомендую :)

Sentens
Пользователь
Sentens
Пользователь
Репутация: 0
С нами: 14 лет 2 месяца

Сообщение #8 Sentens » Сб января 16, 2010 9:33 pm

Да, действительно загнул)
Прочитав пару страниц обсуждений на форуме overclockers.ru, нашел очень хороший ответ:
"Ну, спору нет, что лучше ремуксы, или хотя-бы BDRip 1080p DVD9, BDRip 720p DVD9 :) BDRip 720p 4-5Гб приятнее глазу чем лицензия DVD9, за счет гораздо большей четкости картинки. Говорю по себе, накачено несколько терабайт фильмов в разных форматах. Сейчас у меня такой порядок предпочтений: BDRip 1080p 8 - 12Гб (храню на hdd поэтому не важно чтобы точно влезало на DVD9), BDRip 720p 6-8Гб (с несколькими звуковыми дорожками), BDRip 720p 4 - 5Гб (с одной звуковой дорогой), DVDRip/BDRip обычного PAL/NTSC/чуть меньшего разрешения на 2Гб, и лучше чтобы кодированный в x264 (заметно лучше DivX, Xvid). DVD9/DVD5 качаю если только BDRip версии не нашел, а фильм стоящий и хочется посмотреть в максимально хорошем качестве, причем если DVD5 сделан из DVD9 убиранием допов, рекламы и не нужных мне дорожек, то предпочитаю качать его, потом если фильм мне понравился и появляется BD качаю BDrip, а DVD версию удаляю."

GhOsT_MZ2
Пользователь
GhOsT_MZ2
Пользователь
Репутация: 0
С нами: 14 лет 2 месяца

Сообщение #9 GhOsT_MZ2 » Вс января 17, 2010 12:15 am

Хм.. весьма интересный движок. Так как приходилось писать нечто подобное, но под другую базу (надеюсь автор AMM не обидится если я подключусь к обсуждению только php-движка), стало интересно что из себя представляет эта радость из нутри...
Первое впечатление о внешности - симпотично, но не совсем информативно. Да, все компактно и удобно, но нету информации о самих видео-файлах, что лично для меня не совсем комфортно.
Плюс к этому, как таковые фильтры отбора и сортировка отсутствуют. В списке фильмов минимум информации, что также, лично для меня и моих целей не айс, ну хотя, это субъективно.

Далее, посмотрев код, все вроде компактно, не плохо, но поразило вот что:

Код: Выделить всё

if ($myrow['Rating']==0)
{
echo "
<img src='img/star_empty.gif' width='20' height='20' alt='Рейтинг отсутствует' title='Рейтинг отсутствует'>
<img src='img/star_empty.gif' width='20' height='20' alt='Рейтинг отсутствует' title='Рейтинг отсутствует'>
<img src='img/star_empty.gif' width='20' height='20' alt='Рейтинг отсутствует' title='Рейтинг отсутствует'>
<img src='img/star_empty.gif' width='20' height='20' alt='Рейтинг отсутствует' title='Рейтинг отсутствует'>
<img src='img/star_empty.gif' width='20' height='20' alt='Рейтинг отсутствует' title='Рейтинг отсутствует'>";
}

Это лишняя трата строк так сказать...
Можно сделать проще:
1) Делаем кучу картинок с этими звездочками, с номерами 1-10 к примеру;
2) Пишем такой код:

Код: Выделить всё

print("<img border=\"0\" src=\"img/" . round((float)$myrow['Rating'] / 10) . ".jpg\" width=\"100\" height=\"20\" title=\"" . $myrow['Rating'] . "\">");

И просто и красиво... нету лишнего кода...
Это не все...

Код: Выделить всё

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><?php echo $myrow['Name'];?></title>
<script type="text/javascript" src='blocks/spoiler.js'></script>
<script type="text/javascript">
function provDataGuest()
{
obj_form=document.forms.form_s;
obj_row_search=obj_form.search;
if (obj_row_search.value=="")
{
alert ("Для поиска необходимо ввести не менее 3х символов");
return;
}
search=obj_row_search.value;
if (search.length<3)
{
alert ("Для поиска необходимо ввести не менее 3х символов");
return;
}
obj_form.submit();
}
</script>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#FFFFFF"; onload="document.form_s.search.focus();">

Такие вещи тоже не обязательно дублировать... Помоему проще создать отдельный файлик, типа header.php и его подключать в начале...
Эти 2 совета сократят код каждого файла на 150 строк... Да и в случае необходимости правки не получится забыть править какой-то отдельный файл, так как все будет в одном месте... А если добавить и footer.php, выводящий нижнюю часть, то код уменьшится на большее количество строк...

Плюс к этому, код не безопасен, ибо налицо SQL-инъекция:

Код: Выделить всё

if (isset ($_GET['ActorID'])) {$ActorID = $_GET['ActorID'];}

Вместо этого нужно так:

Код: Выделить всё

if (isset ($_GET['ActorID'])) {(int)$ActorID = $_GET['ActorID'];}


Ну вроде все что касается кода написал, но думаю напишу еще, так как только глазами пробежался поверхностно...
И еще, не мешало бы красивее его писать, чтобы читабельно было) Но это уже дело каждого)

Что касается самого сервера, то тут дело каждого, но, открывать для внешки такие вещи не безопасно, так как код может быть не безопасен и при получении контроля над веб-сервером, который запущен с максимальными правами, можно натворить дел... Так что, прежде чем ставить, лучше подумайте, а еще лучше, разграничте права для веб-сервера и все, и займитесь более тонкой настройкой в сторону безопасности...

Вот моя радость, если кому интересно... Нету выборки по странам, так как база немного иначе построена, но возможно добавлю потом... да и актеров к сожалению нету, так как нельзя их добавить в автоматическом режиме, но основные моменты более-менее проработаны:
http://ghostmz.no-ip.org/

ynkas M
Опытный пользователь
Аватара
ynkas M
Опытный пользователь
Репутация: 235
С нами: 15 лет 9 месяцев
Откуда: Россия, Москва

Сообщение #10 ynkas » Вс января 17, 2010 3:57 am

GhOsT_MZ2 писал(а):Да, все компактно и удобно, но нету информации о самих видео-файлах, что лично для меня не совсем комфортно.
Это элементарно правится доп. запросами к базе :wink:
GhOsT_MZ2 писал(а):Плюс к этому, как таковые фильтры отбора и сортировка отсутствуют.
Фильтров нет
Сортировка присутствует
GhOsT_MZ2 писал(а):В списке фильмов минимум информации, что также, лично для меня и моих целей не айс, ну хотя, это субъективно.
Ну это сделано как в самой программе
При запуске показывается только 1й фильм и список :wink:
GhOsT_MZ2 писал(а):Далее, посмотрев код, все вроде компактно, не плохо, но поразило вот что:.........
Согласен, что-то можно поправить, а можно и оставить как есть, это не для распространения своей базы на всю паутину, а для личного пользования, поэтому как-то особо не обращал внимания на лишние строки :)
GhOsT_MZ2 писал(а):И еще, не мешало бы красивее его писать, чтобы читабельно было) Но это уже дело каждого)

Изначально код писал для теста, а потом
уже было лень править и оптимизировать, фунциклирует, не тормозит и ладно :wink:

Stuntman
Пользователь
Stuntman
Пользователь
Репутация: 0
С нами: 14 лет 8 месяцев

Re: Мини движок на PHP для вывода данных из базы в HTML

Сообщение #11 Stuntman » Вс января 17, 2010 11:15 am

ynkas писал(а):Нужно мне было как-то показать знакомым свою базу фильмов,
для этого нужно либо устанавливать программу, на что не каждый согласиться,
Задался я целью выцепить все данные из базы и вывести в HTML в наиболее удачный, на мой взгляд,
шаблон от amm - indian...

а если есть прямой IP, то и вовсе USB носитель не нужен.

Спасибо за реализацию!
А как добавить туда тех данные по файлам видео?
И как сделать что бы Дополнительная информация всегда была открыта?
И как это дело можно открыть для доступа в сети интернет,посредством DynDNS?
И в плане безопасности что следует сделать?

Ряд вопросов :oops: :wink:

GhOsT_MZ2
Пользователь
GhOsT_MZ2
Пользователь
Репутация: 0
С нами: 14 лет 2 месяца

Re: Мини движок на PHP для вывода данных из базы в HTML

Сообщение #12 GhOsT_MZ2 » Вс января 17, 2010 1:45 pm

Stuntman писал(а):И как это дело можно открыть для доступа в сети интернет,посредством DynDNS?
И в плане безопасности что следует сделать?

1) Лучше не пользоваться готовыми сборками веб-серверов, так как они подготовлены всего лишь для отладки скриптов и имеют максимальные привелегии в системе, а также кучу ненужных вещей, таких как CGI к примеру, ну и различных дополнений к PHP и MySQL, которые по умолчанию выключены. Поэтому лучше порыться в интернете на предмет установки и безопасной настройки Apache+PHP, благо таких статей масса.
2) Если не иметь ни малейшего представления о том что делаешь, то гораздо безопаснее делать все на виртуальном-хостинге (бесплатном), а не на своем компе. Но тут можно столкнуться с проблемой синхронизации базы и ее формата. Это доставит дискомфорт, так как базу придется каждый раз конвертировать в другой формат (MySQL скорей всего) и заливать на сервер, так как врядли там удастся использовать базу MS Access.

ynkas, ну дело в принципе твое, я лишь указал на то, что меня смутило) Но все же, раз уж выложил, то хоть SQL-инъекцию прикрой, которая и не особо навредит, но может быть не совсем приятно)

ynkas M
Опытный пользователь
Аватара
ynkas M
Опытный пользователь
Репутация: 235
С нами: 15 лет 9 месяцев
Откуда: Россия, Москва

Сообщение #13 ynkas » Вс января 17, 2010 10:35 pm

Перезалил архивы с учетом пожеланий, все в 1м после
Последний раз редактировалось ynkas Вт февраля 02, 2010 2:08 pm, всего редактировалось 1 раз.

Pertsov
Пользователь
Pertsov
Пользователь
Репутация: 0
С нами: 16 лет 10 месяцев
Откуда: Ярославль

Сообщение #14 Pertsov » Пн января 18, 2010 1:17 pm

ynkas - огромное спасибо. Вы великий человек!!
Если бы не вы я бы так и сидел с несчастным online db - я его раз 10 уже перепахал.
Ухожу тестировать ваш плагин (от моих коллег заранее спасибо):)

iRo
Пользователь
iRo
Пользователь
Репутация: 0
С нами: 14 лет 2 месяца

Сообщение #15 iRo » Пн января 18, 2010 4:51 pm

Огромное спасибо!!!

Еще не скачал, но такое сам хотел реализовать :lol:
меня все мучают - Дай переписать, а какие фильмы у тебя есть и т.д.
а тут послал всех на сайт и они в режиме онлайн видят какие фильмы у меня есть )))

супер!!!!

PS так как еще не получил ключик (только оплатил) на AMM
скажите, тут получается что движек php подключается к базе АММ
и генерит html ? просто у меня есть домен с порталом и дома статический IP. вот бы прям с портала подключаться к дому )))


Вернуться в «All My Movies»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 10 гостей