извлечение тегов из загружаемого fb2 и отсылка их в MySQL

Глеб

Aller2TeaM
Пользователь
23 Июн 2012
41
7
8
29
vk.com
И снова ребят я прошу о помощи...
Сие чудо... почти полностью работает - или игнорится вставленный в пхп запрос (врятли), или (к чему больше склоняюсь) неправильная настройка базы :(
и так...
на прикреплённой картинке структура базы в phpmyadmin, в архиве html с функцией загрузки, php скрипт загрузки (нижеизложенный), пример книги, и дамп базы.
php- шка
PHP:
<?php
    $dbhost = 'localhost:3306';
    $dbuser = 'root';
    $dbpass = 'pass';
    $dbname = 'test';
// Проверка на размер файла
if($_FILES["filename"]["size"] > 1024*10*1024)
{
    echo ("Размер файла превышает 10 мегабайт");
    exit;
}
// Проверка на формат файла
if(preg_match('/(\.fb2)$/i',$_FILES["filename"]["name"])) {
    echo ("Загрузка ");
} else {
    echo ("Разрешена загрузка только файлов fb2 формата!");
}
// Проверяем загружен ли файл
if(is_uploaded_file($_FILES["filename"]["tmp_name"])) {
    // Перемещаем файл если загружен - Загрузка в папку books
    $filename = "books/" . $_FILES["filename"]["name"];
    move_uploaded_file($_FILES["filename"]["tmp_name"], $filename);
    echo ("завершена <br/>");
    $book =simplexml_load_file($filename);
    $fname = $book->description->{'title-info'}->author->{'first-name'};
    $mname = $book->description->{'title-info'}->author->{'middle-name'};
    $lname = $book->description->{'title-info'}->author->{'last-name'};
    $btitle = $book->description->{'title-info'}->{'book-title'};
    echo $btitle;
    echo $fname;
    echo $mname;
    echo $lname;
// sql1 не приконектились sql2 нет базы sql3 запрос неверен
    $db = mysql_connect($dbhost, $dbuser, $dbpass) or die ("не взлетело sql1");
    mysql_select_db( $dbname, $db ) or die ("не взлетело sql2");
    $sql = 'INSERT INTO `test`.`books` (`id`, `btitle`, `fname`, `mname`, `lname`, `ganre`, `loc`) VALUES (\'2\', $btitle, $fname, $mname, $lname, \'test8\', \'test8\');';
    function query($sql) {
    mysql_set_charset(‘utf8);
    mysql_query($sql) or die ("не взлетело sql3");
    }
} else {
    echo("Ошибка загрузки файла");
}
?>

SQL:

Код:
CREATE TABLE IF NOT EXISTS `books` (
  `id` int(11) NOT NULL DEFAULT '0',
  `btitle` varchar(64) NOT NULL,
  `fname` varchar(64) NOT NULL,
  `mname` varchar(64) NOT NULL,
  `lname` varchar(64) NOT NULL,
  `ganre` varchar(64) NOT NULL,
  `loc` varchar(64) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
--
-- Дамп данных таблицы `books`
--
 
INSERT INTO `books` (`id`, `btitle`, `fname`, `mname`, `lname`, `ganre`, `loc`) VALUES
(1, 'test', 'test2', 'test3', 'test4', 'test5', 'test6');

Заранее благодарствую(!!!)
 

Вложения

  • temporary.zip
    442,1 KB · Просмотры: 2
  • Снимок.PNG
    Снимок.PNG
    101,1 KB · Просмотры: 5

Электрон

Большой Электрон
Пользователь
30 Мар 2012
504
230
79
27
Попробуй
PHP:
<?php
    $dbhost = 'localhost:3306';
    $dbuser = 'root';
    $dbpass = 'pass';
    $dbname = 'test';
// Проверка на размер файла
if($_FILES["filename"]["size"] > 1024*10*1024)
{
    echo ("Размер файла превышает 10 мегабайт");
    exit;
}
// Проверка на формат файла
if(preg_match('/(\.fb2)$/i',$_FILES["filename"]["name"])) {
    echo ("Загрузка ");
} else {
    echo ("Разрешена загрузка только файлов fb2 формата!");
}
// Проверяем загружен ли файл
if(is_uploaded_file($_FILES["filename"]["tmp_name"])) {
    // Перемещаем файл если загружен - Загрузка в папку books
    $filename = "books/" . $_FILES["filename"]["name"];
    move_uploaded_file($_FILES["filename"]["tmp_name"], $filename);
    echo ("завершена <br/>");
    $book =simplexml_load_file($filename);
    $fname = $book->description->{'title-info'}->author->{'first-name'};
    $mname = $book->description->{'title-info'}->author->{'middle-name'};
    $lname = $book->description->{'title-info'}->author->{'last-name'};
    $btitle = $book->description->{'title-info'}->{'book-title'};
    echo $btitle;
    echo $fname;
    echo $mname;
    echo $lname;
// sql1 не приконектились sql2 нет базы sql3 запрос неверен
    $db = mysql_connect($dbhost, $dbuser, $dbpass) or die ("не взлетело sql1");
    mysql_select_db( $dbname, $db ) or die ("не взлетело sql2");
    mysql_set_charset('utf8',$db);
    $sql = "INSERT INTO `books` (`id`, `btitle`, `fname`, `mname`, `lname`, `ganre`, `loc`) VALUES ('2', '{$btitle}', '{$fname}', '{$mname}', '{$lname}', 'test8', 'test8'");
    mysql_query($sql) or die ("не взлетело sql3");
   
} else {
    echo("Ошибка загрузки файла");
}
?>
 
  • Like
Реакции: Глеб

Глеб

Aller2TeaM
Пользователь
23 Июн 2012
41
7
8
29
vk.com
Попробуй
PHP:
<?php
    $dbhost = 'localhost:3306';
    $dbuser = 'root';
    $dbpass = 'pass';
    $dbname = 'test';
// Проверка на размер файла
if($_FILES["filename"]["size"] > 1024*10*1024)
{
    echo ("Размер файла превышает 10 мегабайт");
    exit;
}
// Проверка на формат файла
if(preg_match('/(\.fb2)$/i',$_FILES["filename"]["name"])) {
    echo ("Загрузка ");
} else {
    echo ("Разрешена загрузка только файлов fb2 формата!");
}
// Проверяем загружен ли файл
if(is_uploaded_file($_FILES["filename"]["tmp_name"])) {
    // Перемещаем файл если загружен - Загрузка в папку books
    $filename = "books/" . $_FILES["filename"]["name"];
    move_uploaded_file($_FILES["filename"]["tmp_name"], $filename);
    echo ("завершена <br/>");
    $book =simplexml_load_file($filename);
    $fname = $book->description->{'title-info'}->author->{'first-name'};
    $mname = $book->description->{'title-info'}->author->{'middle-name'};
    $lname = $book->description->{'title-info'}->author->{'last-name'};
    $btitle = $book->description->{'title-info'}->{'book-title'};
    echo $btitle;
    echo $fname;
    echo $mname;
    echo $lname;
// sql1 не приконектились sql2 нет базы sql3 запрос неверен
    $db = mysql_connect($dbhost, $dbuser, $dbpass) or die ("не взлетело sql1");
    mysql_select_db( $dbname, $db ) or die ("не взлетело sql2");
    mysql_set_charset('utf8',$db);
    $sql = "INSERT INTO `books` (`id`, `btitle`, `fname`, `mname`, `lname`, `ganre`, `loc`) VALUES ('2', '{$btitle}', '{$fname}', '{$mname}', '{$lname}', 'test8', 'test8'");
    mysql_query($sql) or die ("не взлетело sql3");
 
} else {
    echo("Ошибка загрузки файла");
}
?>

И снова ура!!! Спасибо(!!!)
Как только будет готова библиотека (осталось ввести переводчик из win1251 в utf8, ввести генерацию ссылки на файл в поле loc, и php- поисковик по библиотеке), обязательно выложу. Вас как одного из разработчиков ставить стоит?
 

Глеб

Aller2TeaM
Пользователь
23 Июн 2012
41
7
8
29
vk.com
Такс... весело. Проблема была не в вин1251 (не пришлось добавлять конвертер win1251 to utf8). Проблема в какой- то, не понятной мне пока разнице в структуре fb2-шки (на тех fb2-шках где все теги "красиво" оформлены (для примера Chas_vozdayaniya.fb2) - проблем нет. В marsianskie_chroniki.fb2 же, струтура (по моему) оформлена иначе. И второй вариант php-шкой не кушается). Очень интересно...
 

Вложения

  • books.zip
    822,6 KB · Просмотры: 4

Глеб

Aller2TeaM
Пользователь
23 Июн 2012
41
7
8
29
vk.com
Ребяты, почти полностью работает библиотека... Но снова "но"...
Помогите пожалуйста!
Тут целых две проблемы:
1. файл fb2 вместо скачивания открывается, и через пару секунд ещё и обрабатывается как xml
2. Не работает поиск по словам. Даже точный поиск.

PHP:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<form action=browse.php method=post>
    Book_Title:
    <input type=text name=btitle>
    <input type=submit name=submit value="Найти">
</form><br/>
<a href="localhost/books-library/upload.html">Загрузка книг на сервер</a>
<?php
 
    $btitle = $_POST['btitle'];
    if($btitle) { // Если пост запрос, то обрабатываю его
        $dbhost = "localhost:3306";  // localhost или наш IP
        $dbuser = "root";  // Пользователь БД
        $dbpassword = "112233";  // Пароль пользователья БД
        $dbname = "library";  // Название базы
        $db = mysql_connect($dbhost, $dbuser, $dbpassword) or die ("не взлетело sql1");
        mysql_select_db( $dbname, $db ) or die ("не взлетело sql2");
        mysql_set_charset('utf8',$db);
        $result=mysql_query("SELECT * FROM `books` WHERE btitle = ".$btitle."");
        if($result) {
            echo '<br/>';
            echo 'Результат: <br/>';
            while ($row = mysql_fetch_assoc($result)) {
                echo "Данные совпадения: <br/>";
                echo $row['btitle'];
                echo "<br/>";
                echo $row['lname'];
                echo "<br/>";
                $loc = $row['loc'];
                $hyper = "<a href=$loc>Download</a>";
                echo "$hyper";
            }
        } else {
            echo "Ничего не найдено";
        }
    }
?>
 

Rody66

В Дзэне
« PW Мастер II »
3 Апр 2013
119
363
63
30
rodysoft.ru
  • Like
Реакции: Глеб

Глеб

Aller2TeaM
Пользователь
23 Июн 2012
41
7
8
29
vk.com
Родион, молодца, затащил! Мне попадалось что на яндексе, что в гугле, про скачивание, но лишь про .htaccess. Поиск (правда пока по точным совпадениям) работает, пошёл пилить неточный!!! ;D
И по факту... Урашеньки, ПЭР готов! Практика получена, пошёл за напильником!
Всем помогавшим большое спасибо!
 

Глеб

Aller2TeaM
Пользователь
23 Июн 2012
41
7
8
29
vk.com
И такс... первая рабочая версия.
Оформление - чуть менее чем никакое, но оно работает :)
Если оно конечно кому-то нужно.
Работает поиск по названию книги (приблизительное название), или тег жанра (пока в виде тега, но тоже работает приблизительный поиск), или имени, или фамилии, или отчеству автора. Часть закомментирована. Буду обновлять файл на яндекс диске, здесь считаю бессмысленным выкладывать то что не смогу обновлять
 

Пользователи онлайн

Сейчас на форуме нет ни одного пользователя.

Последние ресурсы

Статистика форума

Темы
3.838
Сообщения
21.202
Пользователи
7.617
Новый пользователь
MRDF