Поиск товаров и вывод постранично
Вид формы поиска товаров независимо от нахождения в категории формируется в файле function_form_search_tovars.php. Поиск ведется по соответствию названия или описания товара (рис. 3.15). Форме присваивается id = FormSearchTovars. В скрытом поле передается номер страницы вывода результатов поиска:
input type=’hidden’ id=’pagesearch’ name=’pagesearch’ value=’1′>
Рис. 3.15. Форма поиска полного товара
Функция формирования формы поиска f_form_search_tovar находится в файле
prgtovars/function_form_search_tovar.php (листинг 3.35).
Листинг 3.35
<?php
// Форма поиска товара
function f_form_search_tovars()
{
// файл настроек
require_once("my.php");
// подключение к базе данных
require_once("mybaza.php");
// создание формы поиска
$text1.="<form id=’FormSearchTovars’ action=’javascript:void(null);’ onsubmit=’xajax.$(\"ButtonFormSearchTovars\").disabled=true; xajax.$(\"ButtonFormSearchTovars\").value=\"Подождите…\"; xajax_View_Search_Tovars(xajax.getFormValues(
\"FormSearchTovars\"));’>";
$text1.="<table width=100%>";
$text1.="<tr><td width=50%>Название</td>";
$text1.="<td width=50%>
<input type=’text’ name=’name’ value=” size=20 maxlength=20>
<input type=’hidden’ id=’pagesearch’ name=’pagesearch’ value=’1′></td></tr>";
$text1.="<tr><td width=50%>Поиск в </td>";
$text1.="<td width=50%>
<input type=’checkbox’ name=’inname’ value=’1′ checked>
в названии
<br><input type=’checkbox’ name=’ininfo’ value=’1′ > в описании
</td></tr></table>";
$text1.="<center><input type=’submit’ id=’ButtonFormSearchTovars’
value=’Найти ->’></center>";
$text1.="</form>"; return $text1;
}
?>
Данные формы отправляются в функцию xajax_View_Search_Tovars. Функция View_Search_Tovars (из файла prgtovars/view_tsearch_tovars.php) записывает результаты выполнения в следующие блоки:
center2 — заголовок (путь до категории);
center3 — текущую страницу с товарами (краткое описание);
center4 — ссылки на другие страницы.
Вывод результата поиска товаров иллюстрирует рис. 3.16.
Рис. 3.16. Вывод результатов поиска товаров
Функция View_Search_Tovars, отвечающая за вывод товаров категории, находится в файле prgtovars/view_search_tovars.php (листинг 3.36). Входные параметры — ID выбранной категории и номер страницы вывода.
Листинг 3.36
<?php
// Просмотр товаров по поиску
function View_Search_Tovars($Id)
{
$objResponse = new xajaxResponse();
$objResponse->assign("flag_ajax","value",’yes’);
// вывести заголовок
$zag=f_zag1("Результат поиска");
$objResponse->assign("centercaption3","innerHTML",$zag);
// получить результаты поиска
$content=f_view_search_tovars($Id);
// вывести страницу поиска
$objResponse->assign("center3","innerHTML",$content[0]);
// вывести навигатор страниц
$objResponse->assign("center4","innerHTML",$content[1]);
// блок center3 в зону видимости
$objResponse->script("document.getElementById (‘center3′).scrollIntoView();");
// активировать кнопку
$objResponse->assign("ButtonFormSearchTovars","value", "Найти ->");
$objResponse->assign("ButtonFormSearchTovars","disabled", false);
$objResponse->assign("flag_ajax","value",’no’); return $objResponse;
}
?>
Функция f_view_search_tovars, формирующая контент, находится в файле prgtovars/function_view_search_tovars.php (листинг 3.37). Алгоритм аналогичен поиску товаров категории. Сначала подсчитаем общее количество товаров. Потом номер страницы вывода и номер первого элемента вывода. Число товаров на странице — константа NN1 в файле my.php. Если общее число товаров больше нуля ($count>0), продолжим. В противном случае выводим сообщение По данному запросу поиска ничего не обнаружено (рис. 3.17). Отличие в самом SQL-запросе. Для поиска товаров в SQL-запросе с помощью оператора WHERE вводятся условия для выбора позиций, удовлетворяющих условиям поиска.
Поля формы используются в качестве фильтра, при пустых полях выводится весь список товаров. Еще обратите внимание на оператор LIKE %string% в SQLзапросе.
О каждом товаре будем выводить следующую информацию:
название;
картинку;
краткое описание;
обычную цену;
специальную цену (если есть); при этом обычная цена выводится зачеркнутой;
персональную скидку (если есть);
ссылку Подробно (посмотреть товар подробно);
ссылку В корзину;
ссылку Редактировать (для администратора).
Рис. 3.17. Пустой результат поиска товаров
Листинг 3.37
<?php
function f_view_search_tovars($Id)
{
// файл настроек
require_once("my.php");
// подключение к базе данных
require_once("mybaza.php");
// подключение файла с подпрограммой формирования пути к текущей
//категории
require_once("prgtovars/function_string_kategory.php");
$text=array();
$text1="";
// формирование запроса
$query0="SELECT COUNT(id) FROM tovars WHERE visible=’yes’ ";
$name=utftowin($Id[name]); if(strlen(rtrim(ltrim($name)))>0)
{
if($Id[inname]==1 && $Id[ininfo]==1)
$query0.="&& (name LIKE ‘%".$name."%’ || info LIKE ‘%".$name."%’) "; elseif($Id[inname]==1)
$query0.="&& name LIKE ‘%".$name."%’ ";
elseif($Id[ininfo]==1)
$query0.="&& info LIKE ‘%".$name."%’ "; else
;
}
$rez0=mysql_query($query0);
// получить количество записей в результате запроса
$count=mysql_result($rez0,0);
// получить количество страниц
$pages=ceil($count/NN1);
// корректировка количества страниц
$page=min($Id[pagesearch],$pages);$poz=($page-1)*NN1;
$text1="<div class=’zag_view_tovars’>";
// результат запроса непустой
if($count>0)
{
$query0.=" LIMIT ".$poz.", ".NN1."";
$query1=str_replace("COUNT(id)","*",$query0);
$rez1=mysql_query($query1); while($row1=mysql_fetch_assoc($rez1))
{
// наименование товара
$text1.="<div class=’zag_tovar’><span onmousedown=’ var x=document.getElementById(\"windowdrag\"); x.style.visibility=\"visible\";
var y=\"".$row1[name]."\";x.innerHTML=y;
flag1.status=1;flag1.id=".$row1[id].";return false;’
>".$row1[name]."</span></div>";
// путь к категории товара
$text1.="<div class=’kategory_tovar’>".f_string_kategory(
$row1[id_kategory])."</div>";
$text1.="<div class=’info_tovar’>";
// картинка товара
$text1.="<table><tr><td width=20%><img src=’resize_100.php?
pic=".$row1[img]."’ onmousedown=’
var x=document.getElementById(\"windowdrag\"); x.style.visibility=\"visible\";
var y=\"<img src=resize_100.php? pic=".$row1[img].">\"; x.innerHTML=y;flag1.status=1; flag1.id=".$row1[id]."; return false;’></td>";
// краткая информация о товаре
$text1.="<td width=80%>".$row1[info]."</td></tr></table>";
$text1.="</div>";
// цены для товара по акции
if($row1[new_pay_rub]>0)
{
$text1.="<div class=’no_pay_tovar’>
Цена ".$row1[pay_rub]." руб.</div>";
$text1.="<div class=’new_pay_tovar’>
Спец. цена ".$row1[new_pay_rub]." руб.</div>";
}
// цены для товара без акции
else
$text1.="<div class=’pay_tovar’>
Цена ".$row1[pay_rub]." руб.</div>";
// скидка
$query2="SELECT discount FROM users WHERE id=’".$_SESSION[user]."’";
$text1.="<div class=’discount_tovar’>Скидка ".
mysql_result(mysql_query($query2),0)." %</div>";
// ссылки в Корзину и Товар Подробно
$text1.="<div>
<div class=’function_tovar’>
<a href=’javascript:void()’ onclick=’xajax_Add_To_Korzina(".$row1[id].");’> В корзину</a>
(или drag&drop img или названия)</div>
<div class=’function_tovar’>
<a href=’javascript:void()’ onclick=’xajax_View_Tovar(".$row1[id].");’>Подробно</a>
</div>";
// ссылка для админа Редактировать товар
if($_SESSION[type]>7)
$text1.="<div class=’function_tovar’>
<a href=’javascript:void()’ onclick=’ xajax_Edit_Tovar(".$row1[id].");’>Редактировать</a>
</div>";
$text1.="<div class=’linedown_tovar’><hr></hr></div>";
$text1.="</div>";
}
// ссылка для админа Добавить новый товар
if($_SESSION[type]>7)
$text1.="<div class=’function_tovar’>
<a href=’javascript:void()’ onclick=’ xajax_Add_New_Tovar();’>Добавить новый товар</a>
</div>";
// список ссылок перехода по страницам
$text2=""; if($pages>1)
{
if($page != 1)
{$i=$page-1;
$text2.="<a href=’javascript:void(null);’ onclick=’ document.forms.FormSearchTovars.pagesearch.value=".$i."; xajax_View_Search_Tovars(xajax.getFormValues (\"FormSearchTovars\"));’> <<</a>";
}
$x=array();
$x=doarray1($page,$pages,2); for($i=0;$i < count($x);$i++)
{ if($x[$i]==$page)
$text2.="<a> ".$x[$i]."</a>";
else
{
$text2.="<a href=’javascript:void(null);’ onclick=’ document.forms.FormSearchTovars.pagesearch.value=".$x[$i]."; xajax_View_Search_Tovars(xajax.getFormValues (\"FormSearchTovars\"));’> ".$x[$i]."</a>";
}
}
if($page != $pages)
{$i=$page+1;
$text2.="<a href=’javascript:void(null);’ onclick=’ document.forms.FormSearchTovars.pagesearch.value=".$i."; xajax_View_Search_Tovars(xajax.getFormValues
(\"FormSearchTovars\"));’> >></a>";
}
if($pages != 1)
{$text2.="<br><br>Всего ".$count." Страниц ".$pages."<br>
</center>";} else
{$text2.="</center>";}
}
}
// пустой результат поиска
else
{
$text2="<br><center>По данному запросу поиска ничего не обнаружено</center><br>";
}
$text[0]=$text1;
$text[1]=$text2; return $text;
}
?>
ЗАМЕЧАНИЕ
При формировании блока ссылок в навигаторе страниц необходимо перед переходом на xajax-функцию View_Search_Tovars и отправкой значений полей формы поиска предусмотреть установку значения для скрытого поля pagesearch.
Источник: Петин В. А., Сайт на AJAX под ключ. Готовое решение для интернет-магазина. — СПб.: БХВ-Петербург, 2011. — 432 с.: ил. + CD-ROM — (Профессиональное программирование)
Похожие посты:
- ЗНАКОМСТВО С ПОИСКОВОЙ СИСТЕМОЙ GOOGLE (0)
- Понимание поисковых запросов (0)
- Организация мировой информации (0)
- Вклад поисковой системы Google в жизнь людей и организаций (0)
- Демонстрация поисковой системе Google целой страницы (0)
- Информирование поисковой системы Google о подборках страниц (0)
- Демонстрация поисковой системе Google целых сайтов (0)