Домой / Уроки по Windows / Каталог продукции (MySQL). Каталог продукции (MySQL) Анналы catalog php

Каталог продукции (MySQL). Каталог продукции (MySQL) Анналы catalog php

Мы с Вами уже . И теперь я решил затронуть тему работы с каталогами в PHP . В этой статье Вы научитесь создавать каталоги в PHP , удалять их и считывать из них файлы и подкаталоги.

Начнём с самого простого: создание каталога в PHP :

mkdir("new_dir");
?>

После запуска этого скрипта у Вас будет создан пустой каталог "new_dir ".

Удалить пустой каталог очень просто. Для этого используется функция rmdir() .

rmdir("new_dir");
?>

А вот теперь перейдём к работе с содержимым каталогов через PHP . Здесь есть очень простые правила, которые необходимо соблюдать. Все эти правила очень логичны, и Вы их применяете, когда вручную просматриваете содержимое каталогов:

  1. Открыть каталог.
  2. Считать содержимое.
  3. Закрыть каталог.

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

$dir = opendir("images");
while (($f = readdir($dir)) !== false)
echo $f."
";
closedir($dir);
?>

В результате Вы увидите список всех файлов и каталогов внутри каталога "images ". Также Вы увидите два интересных имени ". " и ".. ". Первый означает "текущий каталог ", а ".. " - родительский.

Теперь подробно о функциях, используемых в этом примере:

  • Функция opendir(string $path) - открывает каталог, находящийся по пути $path , а также возвращает дескриптор, необходимый для работы с этим каталогом.
  • Функция readdir(resource $dir) - считывает текущий элемент в каталоге dir . Текущий элемент задаётся указателем, который сдвигается при каждом вызове. Поэтому получается, что каждый раз эта функция возвращает новый элемент из каталога. Когда все элементы закончились, то функция readdir() возвращает false .
  • Функция closedir(resource $dir) - закрывает каталог dir .

Это все самые важные функции для работы с каталогами в PHP . Однако, хочется добавить ещё одну очень важную деталь по поводу функции rmdir() , которая удаляет каталог. Если Вы внимательно читали, то я написал, что эта функция удаляет "пустой каталог ", то есть в котором нет ни одного файла и каталога (кроме ". " и ".. "). Другими словами, если в каталоге будет хотя бы один файл, то функция rmdir() не сработает . Вот как решить эту проблему Вы узнаете в следующей статье, поэтому подписывайтесь на обновления, чтобы не пропустить её появление.

Реальные проекты на PHP и MySQL. Основа интернет-торговли - реализация покупательской тележки

Часть 2. Онлайн-каталог товаров с разбивкой по категориям

Серия контента:

Этот контент является частью # из серии # статей: Реальные проекты на PHP и MySQL. Основа интернет-торговли - реализация покупательской тележки

https://www.?series_title_by=**auto**

Следите за выходом новых статей этой серии.

При выборе пользователем одной из категорий, открывается соответствующая страница, которая генерируется следующим кодом:

Сценарий начинается с включения файла book_sc_fns.php, содержащего все библиотеки функций данного приложения. Для начала работы требуется запустить сеанс, который должен работать для нормального функционирования покупательской тележки. При этом, сеанс используется каждой страницей сайта.

Функция get_categories() и display_categories()возвращают массив категорий, существующих в системе, который затем передается в функцию display_categories($cat_array) . Описание всех функций выходит за рамки данной статьи, но код самых важных функций представлен ниже по тексту вместе с описанием их работы. Остальные функции хорошо прокомментированы и понятны при ближайшем рассмотрении.

function get_categories() { // Эапросить в базе данных список категорий $conn = db_connect(); $query = "select catid, catname from categories"; $result = @$conn->query($query); if (!$result) return false; $num_cats = $result->num_rows; if ($num_cats == 0) return false; $result = db_result_to_array($result); return $result; }

Функция get_categories() подключается к базе данных и затем извлекает оттуда список состоящий из идентификаторов и имен категорий. Функция db_result_to_array($result) принимает идентификатор результата из MySQL и возвращает массив строк с числовой индексацией, где каждая строка представляет собой ассоциативный массив.

function db_result_to_array($result) { $res_array = array(); for ($count = 0; $row = $result->fetch_assoc(); $count++) $res_array[$count] = $row; return $res_array; }

Затем этот массив возвращается в сценарий index.php где передается в функцию display_categories($cat_array) .

function display_categories($cat_array) { if (!is_array($cat_array)) { echo "В настоящий момент нет доступных категорий
"; return; } echo "
    "; foreach ($cat_array as $row) { $url = "show_cat.php?catid=".($row["catid"]); $title = $row["catname"]; echo "
  • "; do_html_url($url, $title); echo "
  • "; } echo "
"; echo "
"; }

Функция display_categories($cat_array) отображает массив категорий в виде списка ссылок на категории. При этом она преобразует каждую категорию базы данных в ссылку. Причем, все ссылки передаются в следующий сценарий show.cat.php, при этом каждая из них имеет свой собственный параметр – идентификатор catid (это уникальное число, которое сгенерировано MySQL и служащее для такой идентификации). Этот параметр и определяет, какая категория должна отображаться в конечном итоге.

Вывод списка книг для заданной категории

Данный сценарий, в общем, аналогичен по логике тем процессам, которые были описаны выше. Вывод списка осуществляет код, представленный ниже:

Сначала запускается сеанс с помощью функции session_start(), затем с помощью функции get_category_name($catid) передаваемый идентификатор категории преобразуется в имя категории.

unction get_category_name($catid) { // Запросить в базе данных имя категории для данного идентификатора категории $catid = intval($catid); $conn = db_connect(); $query = "select catname from categories where catid = $catid"; $result = $conn->query($query); if (!$result) return false; $num_cats = $result->num_rows; if ($num_cats == 0) return false; $row = $result->fetch_object(); return $row->catname; }

Библиотека функций, отвечающая за обработку логики хранения и извлечения данных о книгах, приведена ниже. Здесь же представлена описываемая функция function get_books($catid) .

query($query); if (!$result) return false; $num_cats = $result->num_rows; if ($num_cats == 0) return false; $result = db_result_to_array($result); return $result; } function get_category_name($catid) { // Запросить в базе данных имя категории для данного идентификатора категории $catid = intval($catid); $conn = db_connect(); $query = "select catname from categories where catid = $catid"; $result = $conn->query($query); if (!$result) return false; $num_cats = $result->num_rows; if ($num_cats == 0) return false; $row = $result->fetch_object(); return $row->catname; } function get_books($catid) { // Выполняет запрос в базу данных книг определенной категории if (!$catid || $catid=="") return false; $conn = db_connect(); $query = "select * from books where catid="$catid""; $result = @$conn->query($query); if (!$result) return false; $num_books = @$result->num_rows; if ($num_books ==0) return false; $result = db_result_to_array($result); return $result; } function get_book_details($isbn) { // Выполняет запрос в базу данных детальной информации о книге if (!$isbn || $isbn=="") return false; $conn = db_connect(); $query = "select * from books where isbn="$isbn""; $result = @$conn->query($query); if (!$result) return false; $result = @$result->fetch_assoc(); return $result; } function calculate_price($cart) { // Вычисляет общую стоимость всех элементов тележки $price = 0.0; if(is_array($cart)) { $conn = db_connect(); foreach($cart as $isbn => $qty) { $query = "select price from books where isbn="$isbn""; $result = $conn->query($query); if ($result) { $item = $result->fetch_object(); $item_price = $item->price; $price +=$item_price*$qty; } } } return $price; } function calculate_items($cart) { // Подсчитывает общее количество элементов в тележке $items = 0; if(is_array($cart)) { $items=array_sum($cart); } return $items; } ?>

Обе функции get_books() и display_books() похожи на их практические аналоги get_categories() и display_categories(). Основное отличие между ними заключается в том, что в случае использования этих функций информация извлекается из таблиц книг, а не категорий. Функция display_books() создает ссылку на каждую книгу данной категории, используя при этом сценарий, отображающий книги определенных категорий (был рассмотрен выше). При этом, как и прежде, каждая ссылка сопровождается параметром в виде суффикса. Этот суффикс в этот раз представляет собой номер ISBN конкретной книги. В конце фрагмента этого сценария содержится код для отображения дополнительных функциональных возможностей. Они появляются на странице в том случае, если в систему входит администратор и представляют собой инструменты администрирования – добавления и удаления книг, категорий и тд.

Функция display_books($book_array) имеет вид:

function display_books($book_array) { // Выводит все книги, переданные в массиве if (!is_array($book_array)) { echo "
В настоящий момент нет доступных книг в этой категории
"; } else { // Создать таблицу echo ""; // Создать строку таблицы для каждой книги foreach ($book_array as $row) { $url = "show_book.php?isbn=".($row["isbn"]); echo ""; } echo "
"; if (@file_exists("images/".$row["isbn"].".jpg")) { $title = ""; do_html_url($url, $title); } else { echo " "; } echo ""; $title = $row["title"]." by ".$row["author"]; do_html_url($url, $title); echo "
"; } echo "
"; }

Сценарий, показывающий информацию о конкретной книге

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

С самого начала, как и в других сценариях, запускается сеанс, а затем с помощью строки:

$book = get_book_details($book);

из базы данных извлекается информация о конкретной книге. Для вывода данных в HTML формате используется следующая форма вызова:

display_book_details($book);

Функция display_book_details($book) выполняет поиск файла изображения для книги, имя которого выглядит как images/$isbn.jpg. Если при этом такого файла нет, то изображение не выводится вообще. Остальная часть сценария устанавливает средства навигации по имеющемуся функционалу. Простому пользователю предлагается использовать кнопку “Continue Shopping” (продолжить покупки), которая возвращает его на исходную страницу категорий. Кроме этого, предлагается кнопка “Add to Cart” (добавить в тележку) для добавления книг в покупательскую тележку. В том случае, когда вошедший в систему пользователь обладает правами администратора, ему предлагается несколько иные, расширенные опции для администрирования.

Выводы

В статье на реальных примерах рассмотрены вопросы реализации онлайн-каталога товаров под проект интернет-магазина средствами PHP, MySQL и веб-сервера Apache. Подробно рассмотрен макет единой торговой системы, позволяющей обслуживать клиентов в режиме онлайн.

Последовательно изложены механизмы работы скриптов, генерирующих стартовую страницу интернет – магазина с категориями и книгами, отсортированными по категориям. Показана работа функций, поддерживающих описанную логику работы скриптов. При этом все функции собраны в соответствующие библиотеки, и их работа наглядно представлена в IDE EasyEclipse для LAMP на приведенных рисунках. Четкая организация кода и пояснения к нему дают возможность легко поддерживать работающие программы, видоизменять их и при необходимости, переносить на любые другие платформы.

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

Данное Web-приложение разработано Выскорко М.С. ([email protected]). Web-приложение является универсальным каталогом продукции. Позволяющим разделить товарные позиции на разделы и подразделы. Каждую товарную позициию характеризует описание и цена. Удобная система администрирования и замечательный дизайн данного каталога не оставит равнодушным никого. Каталог создан с использованием PHP и требует для своей работы наличие базы данных MySQL.

Текущя версия каталога 1.0.0

Инсталляция:

Для успешного функционирования каталога, необходимо создать базу данных, в которой нужно разместить таблицы Web-приложения. Дамп базы данных находится в файлах sql.txt и sql+dump.txt. Первый файл содержит только таблицы, второй - демонстрационную базу данных товарных позиций, на примере которой вы можете протестировать работу Web-приложения, перед тем как размещать его на реальном сайте. После развёртывания базы данных необходимо настроить конфигурационный файл admin/config.php, в котором размещены параметры соединения с базой данных.

В файле admin/config.php необходимо выставить адрес сервера MySQL ($dhost), имя базы данных ($dname), имя пользователя ($duser) и пароль ($dpass). Все четыре переменные вам должен предоставить хостинг, при условии, что для вашего тарифного плана предусмотрено выделение таблиц MySQL.

Особенности:

  • Каталог распространяется с полноценным дизайном.
  • Имеется возможность создавать как разделы, так и подразделы.
  • Имеется возможность создавать собственную базу изображений, и назначать изображения отдельным разделам.
  • Товарные позиции характеризуются описанием и ценой.
  • Существует сервис импорта товарных позиций.

Администрирование:

Система администрирования находится в директории admin, т.е. если вы установили каталог по адресу http://localhost/cat/, то система администрирования будет доступна по адресу http://localhost/cat/admin/, сам каталог будет доступен по адресу http://localhost/cat/catalog/. Система администрирования позволяет создавать, удалять и редактировать разделы и подразделы, загружать и назначать разделам изображения, добавлять и удалять товарные позиции. Важно отметить, что при использовании каталога на реальном сервере, необходимо защитить систему администрирования от злоумышленников. Для этого её необходимо переименовать и защитить паролем. Инструкцию о том, как защитить директорию паролем средствами Web-сервера Apache можно почитать по ссылке

Обратная связь

Загрузить новые версии каталога, а так же ряда других полезных Web-приложений можно по адресу На форуме IT-студии SoftTime, по адресу вы всегда можете найти поддержку по установке и сопровождению данного Web-приложения.

Мы постарались отобрать лучшие каталоги сайтов, в которые стоит добавить ресурс. Большая их часть – бесплатные белые каталоги, которые не требуют размещения обратных ссылок и ставят прямую ссылку на ваш проект. Регистрация в каталогах позволит разнообразить ссылочную массу на проект и в ряде случаев – повысить тИЦ.

Самые известные каталоги сайтов

Бесплатно берут некоммерческие сайты, представляющие большой интерес для пользователей. Если по вашей теме в ЯК мало проектов – шансы на бесплатную регистрацию увеличиваются. Для остальных проектов – регистрация платная и на момент подготовки статьи стоимость добавления сайта составляет 14750 руб. с НДС. Но готовность оплатить регистрацию совсем не гарантирует добавления в Яндекс.Каталог – модерация жесткая.

Регистрация в Яндекс.Каталоге повышает тИЦ, может дать на сайт переходы (при условии, что ваш сайт имеет большой тИЦ) и другой профит.

Крупнейший каталог сайтов Интернета, полностью бесплатный, поддерживается волонтерами. Попадание в DMOZ может повысить доверие к сайту со стороны поисковых систем, например, Google. Такой трафик, как ЯК, обычно не дает. Попасть в каталог очень сложно – оптимально стать редактором того раздела каталога, в который вы планируете добавить сайт – и став редактором, добавить. Либо наладить контакт с нужным волонтером DMOZ.

На момент написания статьи прием новых сайтов в каталог остановили – вместо каталога, предлагали добавить сайт в рейтинг Mail.ru (top.mail.ru). Если каталог возобновить работу – будет очень здорово, т.к. проект старый и ссылка с него – будет полезна.

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

Есть возможность бесплатной и платой регистрации. Последняя на момент подготовки статьи стоит около 300 рублей, но реально ускоряет модерацию и гарантирует добавление сайта. Плюсы платной регистрации – возможность более подробно описать сайт и добавить с карточки не одну, а несколько ссылок на разные разделы.

Каталог принимает корпоративные, коммерческие сайты.

Каталог предлагает несколько вариантов регистрации, в том числе бесплатное и платное добавление сайта.

Есть ограничение – не добавляет сайты с бесплатным хостингом.

Просто хороший каталог сайтов.

Платные каталоги, но на наш взгляд, стоящие своих денег:

12. Webproverka.com
Каталог посещают несколько тысяч посетителей в сутки, поэтому сайты из каталога могут получить не только ссылку, но и трафик. Стоимость регистрации — 10 долларов.

13. Rubo.ru
Стоимость регистрации 5 долларов или 150 рублей на момент подготовки обзора каталогов.

Список каталогов сайтов, не вошедших в ТОП-10:

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

URL каталога Примечание
1 goon.ru Все тематики
2 webcat.info Все тематики
3 sabrina.ru Все тематики
4 openlinks.ru Все тематики
5 refer.ru Все тематики
6 topstat.ru Все тематики
7 catalog.deport.ru Все тематики
8 s-catalog.ru Все тематики
9 faststart.ru Все тематики
10 dir.ikernel.org Все тематики
11 nobius.ru Все тематики
12 irdir.info Все тематики
13 in-catalog.com Все тематики
14 precat.ru Все тематики
15 cat.rusbic.ru Все тематики
16 lermont.ru Все тематики
17 webest.info Все тематики
18 catalog.monty74.ru Все тематики
19 ilinks.ru Все тематики
20 wmcap.ru Все тематики
21 gendilana.ru/cncat Все тематики
22 781313.ru/site_cat.php Все тематики
23 catalog.rufox.ru Все тематики
24 t0psites.com Все тематики
25 catalog.yuga.ru Краснодарские сайты
26 2-999-999.ru Красноярск
27 edirectory.ru Все тематики
28 rosfirm.ru Сайты компаний
29 www.spr.ru Сайты компаний
30 www.yell.ru Сайты компаний
31 rosmarket.ru Сайты компаний
32 yp.piter.com Сайты компаний
33 regtorg.ru Сайты компаний
34 povezlo.su Все тематики
35 miruslug.info Сайты компаний
36 dir.org.ru Все тематики
37 piter.nev.ru Санкт-Петербург
38 catalogr.ru Стартапы, сервисы
39 ins.org.ru Страхование
40 linkstroy.ru Строительная тематика

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

Как еще получить бесплатные ссылки? Полезные базы!

  • Посмотрите 45 сервисов для размещения пресс-релизов . Пресс-релиз — это документ, рассказывающий о какой-то новости или событии на сайте или в компании. В пресс-релизе можно поставить ссылку на сайт, в том числе — активную.
  • Посмотрите бесплатные каталоги статей . Подборка не новая, но часть площадок еще работают. Обратите внимание на площадки в комментариях к посту.
  • 26 лучших каталогов и справочников компаний , куда можно бесплатно добавить корпоративный сайт или интернет-магазин (база 2019 года! ).

Где еще стоит зарегистрировать сайт, помимо каталогов?

  1. Профильные и тематические рейтинги сайтов – могут дать не только ссылку с тематически близкого сайта, но и реальные переходы;
  2. Региональные каталоги. Пример хорошего регионального каталога — Uralweb.ru
  3. Сервисы закладок, которые индексируются поисковыми системами. Кстати, у Яндекса был свой сервис закладок Zakladki.yandex.ru, но сейчас он уже закрыт.
  4. Профили в социальных сетях: ВКонтакте, Одноклассники, Мой Мир, LinkedIn и другие.
  5. Справочник предприятий Яндекса sprav.yandex.ru – дает прямую ссылку на сайт. В справочнике можно разместить компанию на бесплатной и платной основе. Платно стоит не дешево, поэтому если Вы имеете опыт платного размещения — напишите в комментариях, остались ли довольны результатами?
  6. Доски объявлений, но только лучшие из лучших. Найти промышленные доски объявлений, где стоит размещать свои предложения, можно на сайте Snabjenci.ru . База там не новая, поэтому не все сайты могут работать. Однако в свое время на сайте были собраны основные доски объявлений по основным отраслям.
  7. Сайты с вакансиями. на ряде таких сайтов можно регистрироваться как компания-работодатель и создавать свой профиль, открытый для индексации поисковыми системами. В профиле можно указать информацию о компании и ссылку на сайт. Хорошая подборка сайтов вакансий собрана здесь: http://www.kadrof.ru/cat_vac.shtml .
  8. Биржи фриланса. После регистрации на бирже Вы получаете возможность заполнить портфолио. В портфолио можно указывать ссылки на сайты, которые Вы разработали или продвигаете. Поскольку профили фрилансеров открыты для индексации поисковыми системами, то ссылки из портфолио также попадают в индекс. Таким образом с разных бирж фриланса можно получить 10-15 ссылок на сайт. Список популярных бирж можно найти здесь: http://www.kadrof.ru/cat_exchange.shtml .

Если у Вас есть другие идеи, куда еще можно добавить сайт, пожалуйста, делитесь ими в комментариях. Будем рады за дополнение нашего материала полезной информацией.