|
|
Пример поискового скрипта на языке PHP
Скрипт выводит состояние склада по запрашиваемым позициям
для поисковой системы Bfind.ru согласно спецификации.
Версия: 0.2 (19.05.2009)
Параметры вызова:
Поисковый запрос передается в параметре search
Метод: GET
Кодировка запроса: Windows-1251
Кодировка ответа: Windows-1251
Формат базы данных:
partname - название оборудования (обязательное поле)
mfg - производитель
note - описание
pdf - Ссылка на файл с документацией
img - Ссылка на изображение
p1 - розничная цена
p2 - мелкооптовая цена
p3 - оптовая цена
stock - состояние склада (количество позиций на складе или срок поставки)
Скачать этот поисковый скрипт и формат базы данных для него.
<?php
$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"; # Производитель if($row['mfg'] != '') print " <mfg>".$row['mfg']."</mfg>\n"; # Описание if($row['note'] != '') print " <note>".$row['note']."</note>\n";
# Ссылка на PDF if($row['pdf'] != '') print " <pdf>".$row['pdf']."</pdf>\n";
# Ссылка на изображение if($row['img'] != '') print " <img>".$row['img']."</img>\n"; # Валюта цен: доллар print " <cur>USD</cur>\n"; # Розничная цена if($row['p1'] > 0) print " <p1>".$row['p1']."</p1>\n"; # Мелкооптовая цена if($row['p2'] > 0) print " <p2>".$row['p2']."</p2>\n"; # Оптовая цена if($row['p3'] > 0) print " <p3>".$row['p3']."</p3>\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); } print "</data>\n"; $content = ob_get_contents(); ob_clean(); header("Content-type: application/xml"); print '<?xml version="1.0" encoding="windows-1251" ?>'."\n". $content; 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; }
?>
|