Скрипт выводит состояние склада по запрашиваемым позициям
для поисковой системы eFind.ru согласно спецификации.
Версия: 0.2 (19.05.2009)
Параметры вызова:
Поисковый запрос передается в параметре search
Метод: GET
Кодировка запроса: Windows-1251
Кодировка ответа: Windows-1251
Формат базы данных:
partname - название позиции (обязательное поле)
mfg - производитель
note - описание
pdf - Ссылка на файл с документацией
img - Ссылка на изображение
p1 - розничная цена
p2 - мелкооптовая цена
p3 - оптовая цена
stock - состояние склада (количество позиций на складе или срок поставки)
$host = ''; # Адрес MySQL сервера, например: mysql.mysite.com $user = ''; # Имя пользователя базы данных, например: user_stock $pass = ''; # Пароль пользователя, например: MswZ2Qs $base = ''; # Название базы данных, например: store $table = ''; # Название таблицы с данными, например: stock
# Проверка наличия параметра search if(isset($_REQUEST['search']) && $_REQUEST['search'] != '') { # Соединение с базой данных if($dbh = mysql_connect($host, $user, $pass)) { # Установка текущей базы данных mysql_select_db($base, $dbh);
# Запрашиваем в таблице все позиции, названия которых содержат запрос $sth = mysql_query( "SELECT * FROM `".$table."` ". "WHERE `partname` LIKE '%".addslashes($_REQUEST['search'])."%' ". "LIMIT 0,20", $dbh );
# Если при запросе возникла ошибка, выводим соответствующее сообщение и выходим if(mysql_errno() > 0) { header("HTTP/1.1 500 Internal Server Error"); print "<h1>500 Internal Server Error</h1>". "Query Error"; exit; }
ob_start(); print "<data>\n"; if(mysql_num_rows($sth) > 0) { # Идем по каждой найденой записи while($row = mysql_fetch_array($sth, MYSQL_ASSOC)) { print "<line>\n";
# Название позиции print " <part>".$row['partname']."</part>\n";
# Состояние склада print " <stock>".$row['stock']."</stock>\n";
# Если в состояние не цифра (а, например, срок поставки, # наличие на складе партнеров и т.д.), указываем явно, # что данной позиции нет на складе if(!preg_match("/^\d+$/", trim($row['stock']))) print " <instock>0</instock>"; print "</line>\n"; } mysql_free_result($sth);
mysql_close($dbh); } else # Если не удалось соединиться с базой данных, выводим ошибку и выходим { header("HTTP/1.1 500 Internal Server Error"); print "<h1>500 Internal Server Error</h1>". "Could not connecto to database"; exit; } } else # Если параметр search не задан, вывести ошибку и выйти { header("HTTP/1.1 500 Internal Server Error"); print "<h1>500 Internal Server Error</h1>". "Request is not set"; exit; }