Поиск товаров и вывод постранично

Опубликовал: Вторник, Ноябрь 13, 2012 в категории AJAX, PHP | Пока нет комментариев

Вид формы поиска товаров независимо от нахождения в категории формируется в файле 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 — (Профессиональное программирование)

Add to Social Bookmarks
  • del.ici.ous
  • Digg
  • Furl
  • Google
  • Simpy
  • Spurl
  • Y! MyWeb
  • BobrDobr
  • Mr. Wong
  • Yandex.Bookmarks
  • Text 2.0
  • News2
  • AddScoop
  • RuSpace
  • RUmarkz
  • Memori
  • Google Bookmarks
  • Pisali
  • SMI 2
  • Moe Mesto
  • 100 Zakladok
  • Vaau!
  • Technorati
  • RuCity
  • LinkStore
  • NewsLand
  • Lopas
  • Закладки - I.UA
  • Connotea
  • Bibsonomy
  • Trucking Bookmarks
  • Communizm
  • UCA

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>