X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Парсинг txt файла построчно, поиск и выдача результата
ChipFord.ru
ChipFord.ru
Topic Starter сообщение 7.10.2015, 0:00; Ответить: ChipFord.ru
Сообщение #1


Здравствуйте! нужна Ваша помощь:
Задача: необходимо разместить кнопку поиска запчастей на сайте, файл с запчастями находиться в корне сайта и имеет следующий вид:

ford.txt

0000006|4,46

0000323|3,25

0010214|277,52

0010636|683,46

0010699|305,88

0012104|305,88

0012172|0,41

0012173|0,41

0020847|608,51

...

 

вводим окно поиска номер запчасти( к примеру: 0000006) ниже выводится результат поиска (стоимость запчасти): 4,46 руб.

 

А если я хочу сделать вывод в виде таблицы, соответственно, добавляю в файле следующее:

 


0000006|4,46|2N11-15201-AB|Хомут

0000323|3,25

0010214|277,52

0010636|683,46

0010699|305,88

0012104|305,88ф

0012172|0,41

0012173|0,41

0020847|608,51

...


 

нажимаем на кнопку поиск, выводится таблица со следующим содержанием:

 

FINIS: 0000006 Инженерный номер: 2N11-15201-AB Описание: Хомут. Цена: 4,46 руб.

 

Помогите пожалуйста, с интеграцией данного кода на сайт. Спасибо

0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ChipFord.ru
ChipFord.ru
Topic Starter сообщение 7.10.2015, 2:24; Ответить: ChipFord.ru
Сообщение #2



<?
error_reporting(E_ALL & ~E_NOTICE);
define('COLUMN_SEPARATOR', '|');
$fileName = __DIR__ . DIRECTORY_SEPARATOR . 'ford.txt';

if ($_REQUEST['search']) {
$arData = array();
array_walk(file($fileName, FILE_IGNORE_NEW_LINES), function($arItem) use (&$arData) {
$row = explode(COLUMN_SEPARATOR, $arItem);
$arData[$row[0]] = $row;
});
$arResult = ($arData[$_REQUEST['number']]) ? $arData[$_REQUEST['number']] : false;
}
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<style type="text/css">
table { border-collapse: collapse; }
td { border: 1px solid black; padding: 3px; }
</style>
</head>
<body>
<form action="">
<input type="text" name="number" value="" />
<input type="submit" name="search" value="Найти" />
</form>
<? if (isset($arResult)): ?>
<? if (!$arResult): ?>
Ничего не найдено
<? elseif (count($arResult) <= 2): ?>
Cтоимость запчасти: <?=$arResult[1]?> руб.
<? else: ?>
<table>
<tr>
<td>FINIS: <?=$arResult[0]?></td>
<td>Инженерный номер: <?=$arResult[2]?></td>
<td>Описание: <?=$arResult[3]?></td>
<td>Цена: <?=$arResult[1]?></td>
</tr>
</table>
<? endif ?>
<? endif ?>
</body>

Разместил код на сайте:
http://www.chipford.ru/zap.php

Файл ford.txt положил в корень сайта:
http://www.chipford.ru/ford.txt

При поиске: 0000006

ничего не выдаёт(((

Подскажите пожалуйста куда копать, спасибо
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ChipFord.ru
ChipFord.ru
Topic Starter сообщение 7.10.2015, 4:01; Ответить: ChipFord.ru
Сообщение #3


уменьшил файл до 10 строк, теперь пишет: ничего не найдено

Видимо файл большой, какой интересно лимит памяти...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ChipFord.ru
ChipFord.ru
Topic Starter сообщение 7.10.2015, 6:53; Ответить: ChipFord.ru
Сообщение #4



<?
error_reporting(E_ALL & ~E_NOTICE);
define('COLUMN_SEPARATOR', '|');
$fileName = __DIR__ . DIRECTORY_SEPARATOR . 'ford.txt';

if ($_REQUEST['search']) {
$arResult = false;
$firstLine = true;
$handle = @fopen($fileName, "r");
if ($handle) {
while (($arItem = fgetcsv($handle, 4096, COLUMN_SEPARATOR)) !== false) {
// fix file UTF-8 BOM
if ($firstLine) {
$arItem[0] = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $arItem[0]);
$firstLine = false;
}

if ($arItem[0] == $_REQUEST['number']) {
$arResult = $arItem;
break;
}
}
fclose($handle);
}
}
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<style type="text/css">
table { border-collapse: collapse; }
td { border: 1px solid black; padding: 3px; }
</style>
</head>
<body>
<form action="">
<input type="text" name="number" value="" />
<input type="submit" name="search" value="Найти" />
</form>
<? if (isset($arResult)): ?>
<? if (!$arResult): ?>
Ничего не найдено
<? elseif (count($arResult) <= 2): ?>
Cтоимость запчасти: <?=$arResult[1]?> руб.
<? else: ?>
<table>
<tr>
<td>FINIS: <?=$arResult[0]?></td>
<td>Инженерный номер: <?=$arResult[2]?></td>
<td>Описание: <?=$arResult[3]?></td>
<td>Цена: <?=$arResult[1]?></td>
</tr>
</table>
<? endif ?>
<? endif ?>
</body>
</html>

Это рабочий код.


У меня возникли ещё пару идей/вопросов.

Прайс-листы поставщик шлёт в текстовом формате с расширением .txt
содержимое файла: финис и цена без НДС

0101940|4902,91
0102056|1361,25
0102089|5464,43
0102121|2103,45
0102125|2103,45
0102306|6082,25
0115960|151,52
0116410|247,84
0120437|1210,93
...

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

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

+ как добавить НДС 18% к сумме

+ как можно добавить информацию в виде таблицы истории поиска запчастей: последние 10 запросов к примеру...

Спасибо
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 7.10.2015, 8:19; Ответить: fedornabilkin
Сообщение #5


Что бы решить все эти вопросы и еще те, которые будут возникать в будущем, надо использовать базу данных.
И добавлять сможешь, и редактировать, и изменять.
Достаточно просто будет сохранять историю поиска, также для конкретного юзера свою историю.
Думаю можно связаться с поставщиком и попросить, что бы прайсы высылал в xml
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 7.10.2015, 18:19; Ответить: miketomlin
Сообщение #6


Поддержу. Переносите в базу. Скорость поиска наверняка увеличится, причем значительно. Можно и без xml. Во-первых, достаточно конвертеров. Во-вторых, можно в том же Экселе пересохранять в csv и импортировать в этом формате.
Из txt импорт тоже сделать не трудно. Только я не понял, как вы собираетесь определять значения доп. полей, которых нет в файле.


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыТрафик в Телеграм (рассылка, инвайт, парсинг)
9 gelt 2858 8.4.2024, 15:28
автор: gelt
Открытая тема (нет новых ответов) ВКонтакте: полный комплекс услуг (массовая рассылка по стенам групп и в ЛС), парсинг, лайки, инвайты
Гарантия самой низкой цены
4 MaxChemist 1922 1.1.2023, 13:23
автор: MaxChemist
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыСбор баз, парсинг информации, постинг, автоматизация
Качественно и в срок
21 SEOMR 20843 22.7.2022, 15:10
автор: iodjin
Открытая тема (нет новых ответов) Парсинг
0 alnsam 856 20.7.2022, 16:25
автор: alnsam
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыТребуется парсинг поисковой выдачи
0 WoWeb 872 5.7.2022, 16:31
автор: WoWeb


 



RSS Текстовая версия Сейчас: 25.4.2024, 12:53
Дизайн