Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Кухарчик А. -> "РНР: обучение на примерах" -> 49

РНР: обучение на примерах - Кухарчик А.

Кухарчик А. РНР: обучение на примерах — Мн.: Новое знание, 2004. — 237 c.
ISBN 985-475-050-7
Скачать (прямая ссылка): phpobuchennaprimerah2004.pdf
Предыдущая << 1 .. 43 44 45 46 47 48 < 49 > 50 51 52 53 54 55 .. 68 >> Следующая

Прежде чем вы начнете делать свой магазин, необходимо досконально изучить прайс товаров и способы его обновления в оригинале. Допустим, есть фирма, в ассортименте которой компьютерные товары. Их достаточное количество, чтобы не заниматься обновлением вручную, а придумать систему для синхронизации данных прайса и магазина.
Пусть прайс у нас будет набран в программе Excel (как правило,
это не так, многие фирмы используют в работе специальные программы, например «1С: Бухгалтерия», но это не важно, так как данные из таких пакетов всегда можно импортировать в Excel). Количество разделов в прайсе и товаров в них не фиксировано, а сам прайс представляет собой набор строк и колонок. В каждой
Интернет-магазин.
171
строке — товар или наименование раздела прайса (например, процессоры, память, мыши и т.д.). Количество колонок не имеет значения, обычно присутствуют наименование, описание и цена товара. Впрочем, могут быть и другие варианты.
Что и как можно использовать, имея такие данные? Конечно, существуют специальные модули для выборки данных из файла формата Excel (различные для разных языков программирования), но такие модули, как правило, не являются бесплатными, а значит, неприемлемы для нас. Кроме того, существует проблема настройки этих модулей. Иногда, чтобы это сделать, нужно
обладать такой квалификацией, что проще самому все написать
с нуля :-) Впрочем, эти модули и не нужны на самом деле. Что представляет собой наш прайс? Правильно, набор строк и колонок, причем строго организованных. А значит, из таких строк и колонок можно построить текстовый файл с точно такой же структурой. Только вместо визуального разделения строк и колонок (как в Excel) надо использовать какие-либо символы. Конечно, в этом случае внешний вид сильно изменится, так как длина строк всегда разная, но это и не важно, ведь структура останется прежней. Это будут все те же строки и колонки'," только уже в текстовом формате, который очень легко прочитать и обработать при помощи практически любого языка программирования.
Excel умеет сохранять свои файлы в разных форматах. Нас будет интересовать сейчас формат «текстовый файл с разделителями». Тип разделителя не важен, в их качестве можно использовать даже запятые или пробелы. Мы же остановимся на табуляции.
Вот что у нас получилось: файл *.txt, в котором строки разделены переводом строки (это простой - Enter), колонки разделены символами табуляции. Структура прайса осталась прежней, так как
об этом позаботился мастер сохранения Excel.
Вот мы и нашли способ не заниматься рутинной работой по
ежедневному обновлению прайса в нашем интернет-магазине, а максимально автоматизировать этот процесс. Перед тем как начинать работать с полученным файлом, можно подумать, как
его немного сжать или обработать. Это бывает необходимо для
172
Программирование на РНР
того, чтобы удалить ненужные колонки, повторяющиеся пробелы, временно отсутствующие в наличии товары и т.д.
Для этого надо считать файл в массив, обработать каждую строку на предмет наличия ненужной информации, записать полученный результат опять в массив на то же место и, наконец, весь массив записать в файл. Однако исходите из конкретной необходимости таких операций, вполне возможно достаточно просто удалить повторяющиеся пробелы.
Когда ¦ все готово, пора приступать к выборке данных из нашего текстового файла с прайсом. Сначала нужно считать файл в массив:
$file = "price.txt"; $tovar = file ($file);
Дальше надо обработать массив $tovar [] в цикле с выводом результатов работы на экран:
$i = 0; // счетчик начинается с нуля
while ($i < count ($tovar)) : // открыли цикл до последнего
// элемента в массиве echo $tovar[$i]; // выводим строку на экран echo "<br>"; // не забываем про перевод строк
// увеличиваем счетчик на единицу endwhile; // заканчиваем цикл
Вот самый простой вариант вывода прайса. Он, правда, обладает существенным недостатком — весь прайс выводится за один раз, причем все колонки в одной строке. А это неприемлемо по эстетическим причинам.
Правильнее предоставить клиенту возможность выбора раздела
прайса.
Сначала нужно отделить разделы прайса от информации о товаре. Это можно сделать, если обратить внимание на то, в какой из колонок находится название раздела. Как правило, в той же, что
Интернет-магазин
173
и название товара. Но в строке с названием раздела нет информации о цене товара, а это может служить хорошим отличительным признаком для программы. Достаточно каждый раз проверять наличие в выбранной строке колонки цен. Если колонка пустая, значит, в строке — название раздела, и его можно вывести на экран, если нет — это товар, такую строку просто пропускаем, если надо выводить только названия разделов. И наоборот — для вывода только товаров. Программа просматривает в цикле строки файла. Если в колонке с ценой не пусто — это товар, и его надо вывести на экран, предварительно
отформатировав информацию. Если же пусто — это начало
следующего раздела прайса, и обработку надо прекратить, так как цель достигнута: весь выбранный посетителем раздел выведен на экран.
Предыдущая << 1 .. 43 44 45 46 47 48 < 49 > 50 51 52 53 54 55 .. 68 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100