Регистрация | Вход
Участие в поиске

Пример поискового скрипта на языке PHP

Скрипт выводит состояние склада по запрашиваемым позициям 
для поисковой системы eFind.ru согласно спецификации.


<?php
/*
###    Скрипт выводит состояние склада по запрашиваемым позициям 
### для поисковой системы eFind.ru согласно спецификации.
###
### Версия: 2.0 (29.08.2018)
###
### 
### Параметра вызова:
###     Поисковый запрос передается в параметре search
###     Метод: GET
###     Кодировка запроса: Windows-1251
###     Кодировка ответа: Windows-1251
###
###
### Формат базы данных:
###    partname - название позиции (обязательное поле)
###    mfg - производитель
###    note - описание
###    pdf - ссылка на PDF
###    img - ссылка на изображение
###    stock - состояние склада (количество позиций на складе или срок поставки)
###
*/

    $host = '';       # Адрес MySQL сервера, например: mysql.mysite.com
    $user = '';       # Имя пользователя базы данных, например: user_stock
    $pass = '';       # Пароль пользователя, например: MswZ2Qs
    $base = '';       # Название базы данных, например: store
    $table = '';      # Название таблицы с данными, например: stock
    
    $search = '';

    # Проверка наличия параметра search
    if(isset($_REQUEST['search']) && $_REQUEST['search'] != '')    
    {
        $search = $_REQUEST['search'];
    }
    
    # Соединение с базой данных
    if($dbh = mysqli_connect($host, $user, $pass))
    {
        # Установка текущей базы данных
        mysqli_select_db($dbh, $base);
        
        # Запрашиваем в таблице все позиции, названия которых содержат запрос
        $sth = mysqli_query($dbh, "SELECT * FROM `".$table."` ".
                "WHERE `partname` LIKE '%".addslashes($_REQUEST['search'])."%' ".
                "LIMIT 0,5");
        
        # Если при запросе возникла ошибка, выводим соответствующее сообщение и выходим
        if(mysqli_errno($dbh) > 0)
        {
            header("HTTP/1.1 500 Internal Server Error");
            print    "<h1>500 Internal Server Error</h1>\nQuery Error";
            exit;
        }
        
        ob_start();
        print "<data version='2.0'>\n";
        if(mysqli_num_rows($sth) > 0)
        {
            # Идем по каждой найденной записи
            while($row = mysqli_fetch_array($sth, MYSQL_ASSOC))
            {
                print "<item>\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 "    <stock>".$row['stock']."</stock>\n";
                

                print "</item>\n";
            }
            mysqli_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;        
        
        mysqli_close($dbh);
    } else
    # Если не удалось соединиться с базой данных, выводим ошибку и выходим
    {
        header("HTTP/1.1 500 Internal Server Error");
        print "<h1>500 Internal Server Error</h1>\nCould not connecto to database";
        exit;
    }

?>
2002—2019 «ЭтЛайт»
Наши контакты: +7 (812) 309-50-30, client@efind.ru
Реклама · Участие в поиске · Инструменты · Блог · Аналитика · English version
  RADEL ExpoElectronica