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

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

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

Сообщение #16 GhOsT_MZ2 » Пн января 18, 2010 5:41 pm

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

Движок будет работать только в том случае, если имеет доступ к ODBC компа, где лежит база. Но тут, насколько я знаю, удаленно к ней подключиться нельзя. Для таких вещей тебе нужен сервер баз данных, например, MS SQL или MySQL, и соответствующая база данный.
Как вариант - поставить MySQL сервер и конвертировать локальным скриптом из базы АММ в базу MySQL. Сервер нужно будет открыть для внешки, а в самом двиге все переделать под MySQL.

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

Сообщение #17 ynkas » Пн января 18, 2010 5:59 pm

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

В чем проблема, настраиваете дома и кидаете ссылку на портал ;)
А на портале можно сделать проверку, если Online (домашний комп включен или сервер запущен) то ссылка появляется, Offline что-нибуть еще вставить ))
Но в плане безопасности я не уверен что стоит так делать, хотя ломать там в принципе то и нечего, это всего лишь backup базы...

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

Сообщение #18 Riemann » Пн января 18, 2010 10:40 pm

Отличная штука, все 7200 фильмов пошли как по маслу, есть в шаблоне проскальзывают глюки, но не суть.
Есть проблема в сортировке по жанрам и т.п. Пишет вроде слева при сортировке по жанрам
Warning: odbc_exec() [
function.odbc-exec
]: SQL error: [Microsoft][Драйвер ODBC Microsoft Access] Ошибка синтаксиса в выражении запроса 'c.CountryID=$CountryID AND cl.CountryID=c.CountryID AND m.MovieID=cl.MovieID'., SQL state 37000 in SQLExecDirect in ...\www\myfilm\left_films.php on line 17

Warning: odbc_fetch_array() expects parameter 1 to be resource, boolean given in ...\www\myfilm\left_films.php on line 18

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

Сообщение #19 ynkas » Пн января 18, 2010 11:10 pm

Riemann писал(а):Есть проблема в сортировке по жанрам и т.п. Пишет вроде слева при сортировке по жанрам
Warning: odbc_exec() [
function.odbc-exec
]: SQL error: [Microsoft][Драйвер ODBC Microsoft Access] Ошибка синтаксиса в выражении запроса 'c.CountryID=$CountryID AND cl.CountryID=c.CountryID AND m.MovieID=cl.MovieID'., SQL state 37000 in SQLExecDirect in ...\www\myfilm\left_films.php on line 17

Warning: odbc_fetch_array() expects parameter 1 to be resource, boolean given in ...\www\myfilm\left_films.php on line 18

Тут уже видимо особенность заполнения вашей базы, обновляли наверное не только с кинопоиска...
Видмо нужно в коде писать доп. проверки или вырезать лишние символы. Не видя самой базы сложно сказать...
Я писал код исходя из своей базы, а у меня только с кинопоиска информация о фильмах и актерах.
Можете упаковать свою базу (без картинок), выложить на обменник и кинуть ссылку в лс, скачаю гляну в чем проблема.

Снеговик
Пользователь
Снеговик
Пользователь
Репутация: 0
С нами: 9 лет 10 месяцев

Сообщение #20 Снеговик » Пн января 18, 2010 11:40 pm

а ничего что она больше 100 мб весит?

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

Сообщение #21 Riemann » Пн января 18, 2010 11:54 pm

Да есть такое, фильмов 1300 всё ещё находятся не обновленные, точнее инфа с них imdb-ная. Можете сами попробовать добавть себе пару кино с imdb и проверить, а то мою гиговую базу ещё надо покоцать, чтоб залить...

Кстати поставили тестовую базу и таже беда при выборе жанров

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

Warning: odbc_exec() [
function.odbc-exec
]: SQL error: [Microsoft][Драйвер ODBC Microsoft Access]Неверное поле COUNT , SQL state 07001 in SQLExecDirect in E:\server\xampp\htdocs\172.16.0.157\www\myfilm\left_films.php on line 17

Warning: odbc_fetch_array() expects parameter 1 to be resource, boolean given in ...\www\myfilm\left_films.php on line 18

Warning: odbc_exec() [
Последний раз редактировалось Riemann Вт января 19, 2010 12:00 am, всего редактировалось 1 раз.

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

Сообщение #22 GhOsT_MZ2 » Пн января 18, 2010 11:59 pm

Открой фал \www\myfilm\left_films.php.
Добавь перед 17 строкой пустую строку и добавь в нее
die("SQL-query: SELECT * FROM Countries c, CountryLink cl, movies m WHERE c.CountryID=$CountryID AND cl.CountryID=c.CountryID AND m.MovieID=cl.MovieID ORDER BY m.Name");

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

Снеговик
Пользователь
Снеговик
Пользователь
Репутация: 0
С нами: 9 лет 10 месяцев

Сообщение #23 Снеговик » Пн января 18, 2010 11:59 pm

залили тестовую базу из архива. ошибка не пропала

Снеговик
Пользователь
Снеговик
Пользователь
Репутация: 0
С нами: 9 лет 10 месяцев

Сообщение #24 Снеговик » Вт января 19, 2010 12:06 am

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

SQL-query: SELECT * FROM Countries c, CountryLink cl, movies m WHERE c.CountryID= AND cl.CountryID=c.CountryID AND m.MovieID=cl.MovieID ORDER BY m.Name

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

Сообщение #25 GhOsT_MZ2 » Вт января 19, 2010 12:11 am

Хм.. проблема банальная - полученные значение не образабатываются, что и привело к ошибке...
SQL-query: SELECT * FROM Countries c, CountryLink cl, movies m WHERE c.CountryID= AND cl.CountryID=c.CountryID AND m.MovieID=cl.MovieID ORDER BY m.Name

Ошибка в выделенном месте... лучше проверять наличие значение с помощью empty, ибо isset покажет что переменная была создана, но она может быть пустой, как и оказалось в данном случае...
Возвращаем все назад и делаем так:

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

if (isset ($CountryID))

меняем на

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

if (!empty($CountryID))

Снеговик
Пользователь
Снеговик
Пользователь
Репутация: 0
С нами: 9 лет 10 месяцев

Сообщение #26 Снеговик » Вт января 19, 2010 12:16 am

без изменений(

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

Сообщение #27 GhOsT_MZ2 » Вт января 19, 2010 12:22 am

Попробуй заменить содержимое этого файла на это:

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

<?php
  include ("blocks/db.php");
  include ("blocks/get.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <title>Фильмы</title>
    <link href="style.css" rel="stylesheet" type="text/css">
  </head>
  <body>
    <div id="coolmenu">
<?php
  if (!empty($CountryID)) {
    $result = odbc_exec($db,"SELECT * FROM Countries c, CountryLink cl, movies m WHERE c.CountryID=$CountryID AND cl.CountryID=c.CountryID AND m.MovieID=cl.MovieID ORDER BY m.Name");
    $myrow = odbc_fetch_array($result);
  }
  if (!empty($GenreID)) {
    $result = odbc_exec($db,"SELECT * FROM Genres g, GenresLink gl, movies m WHERE g.GenreID=$GenreID AND gl.GenreID=g.GenreID AND m.MovieID=gl.MovieID ORDER BY m.Name");
    $myrow = odbc_fetch_array($result);
  }
  if (!empty($mediatypeID)) {
    $result = odbc_exec($db,"SELECT Name,MovieID FROM movies WHERE mediatypeID=$mediatypeID ORDER BY Name");
    $myrow = odbc_fetch_array($result);
  }
  if (!empty($MediaLocationID)) {
    $result = odbc_exec($db,"SELECT Name,MovieID FROM movies WHERE MediaLocationID=$MediaLocationID ORDER BY Name");
    $myrow = odbc_fetch_array($result);
  }
  if (!empty($medialabel)) {
    $result = odbc_exec($db,"SELECT Name,MovieID FROM movies WHERE medialabel='$medialabel' ORDER BY Name");
    $myrow = odbc_fetch_array($result);
  }
  if (!empty($studio)) {
    $result = odbc_exec($db,"SELECT Name,MovieID FROM movies WHERE studio='$studio' ORDER BY Name");
    $myrow = odbc_fetch_array($result);
  }
  if (empty($CountryID) || empty($GenreID) || empty($mediatypeID) || empty($MediaLocationID) || empty($medialabel) || empty($studio)) {
    $result = odbc_exec($db,"SELECT Name,MovieID FROM movies ORDER BY Name");
    $myrow = odbc_fetch_array($result);
  }

  do {
    printf ("<a href='view_film.php?MovieID=%s' alt='%s' title='%s' TARGET='_top'>%s</a>",$myrow['MovieID'],$myrow['Name'],$myrow['Name'],$myrow['Name']);   
  }
  while ($myrow = odbc_fetch_array($result));
?>
    </div>
  </body>
</html>

Снеговик
Пользователь
Снеговик
Пользователь
Репутация: 0
С нами: 9 лет 10 месяцев

Сообщение #28 Снеговик » Вт января 19, 2010 12:26 am

непомогло(((( а конфиг апача может влиять или php

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

Сообщение #29 GhOsT_MZ2 » Вт января 19, 2010 12:30 am

Кстати да... если сам поднимал или выключил register_globals, то включи его в php.ini...

Снеговик
Пользователь
Снеговик
Пользователь
Репутация: 0
С нами: 9 лет 10 месяцев

Сообщение #30 Снеговик » Вт января 19, 2010 12:31 am

работала и работает сортировка по актерам только((


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

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

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