Веб-каталог магазина

При реализации «веб-каталогов» для небольших предприятий нередко проблемой становится поддержка выполняемого на сервере кода, в частности — восстановление его работоспособности после обновления платформы. В данной задаче предлагается реализовать вариант каталога, свободный от этого недостатка.

Введение

Совершенно рядовой случай: у магазина нет возможности нанять «штатного» программиста; поэтому для разработки каталога приглашают «стороннего» человека — на срочном контракте.

Разработанный каталог работает несколько лет, после чего компания, предоставляющая услуги по размещению каталога во Всемирной паутине, обновляет PHP (MySQL, Apache, etc.)

Каталог, разумеется, перестает работать.

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

В данной задаче предлагается разработать веб-каталог так, чтобы с ним сценарий выше был полностью исключен.

Задача

Чтобы избежать проблем, возникающих при обновлении серверной платформы, в «базовой версии» (30 единиц) предлагается программный код каталога полностью расположить на машине оператора. А именно, «каталог» состоит из:

Ясно, что в этом случае любые обновления ПО на сервере никак не затронут работоспособность программ каталога. Более того, если возникнет необходимость перенести каталог на другой сервер — это можно сделать простым копированием HTML-документа (например, Rsync, scp, etc.) — без необходимости получать доступ и настраивать СУБД, адаптировать код к версиям программ серверной платформы, etc.

Например, пусть даны следующий документ и .csv-файл.

<!DOCTYPE html><html lang=ru><meta charset=utf-8 />
<title >Яблоки-трейд</title>
<table>
<caption >Наши предложения</caption>
<tr ><th >Наименование</th><th >Цена</th></tr>
<tr ><td >Ред Делишес</td><td >73.41</td></tr>
<tr ><td >Гренни Смит</td><td >65.80</td></tr>
</table>
Гренни Смит,67.17
Макинтош,79.35

Тогда результатом работы программы может быть следующий HTML-документ:

<!DOCTYPE html><html lang=ru><meta charset=utf-8 />
<title >Яблоки-трейд</title>
<table>
<caption >Наши предложения</caption>
<tr ><th >Наименование</th><th >Цена</th></tr>
<tr ><td >Ред Делишес</td><td >73.41</td></tr>
<tr ><td >Гренни Смит</td><td >67.17</td></tr>
<tr ><td >Макинтош</td><td >79.35</td></tr>
</table>

Разумеется, следует предусмотреть способ удаления строк таблицы (например, указанием «-» в поле «цена» .csv-файла.)

Развиваем тему

Примерный перечень функций (5‒15 единиц каждая — до предела 100 единиц), которые можно реализовать сверх определенного выше.