Участие в поиске

Пример поискового скрипта на языке 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($sthMYSQL_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;
    }

?>
>
© 2009—2015 «ЭтЛайт»
Администрация: +7 (812) 334-85-22, admin@bfind.ru
LiveZilla Live Help