Задача такая: на сайте есть форма поиска. Человек вводит в поле поиска артикул или часть артикула товара и ему необходимо предоставить список товара, в артикуле которого встречается то, что он ввел в поле поиска.
Из формы методом POST забирается то, что человек ввёл ($artorname) и передаётся на обработку скрипту find.php.
find.php
PHP:
скопировать код в буфер обмена
<?PHP
include('class.eshop.php');
$eshop=new EshopDB();
$product_array=$eshop->find($artorname);
$np=$eshop->np;
$eshop->display_product_find($product_array);
$eshop->page_idx();
?>
class.eshop.php
PHP:
скопировать код в буфер обмена
function find($artorname)
{
$sql="select * from product where product_articul LIKE '%".$artorname."%'";
$res=$this->conn->query($sql);
$num_product=$res->num_rows;
$this->np=ceil($num_product / $this->MAX_COUNT); @ $page = intval($_GET['page']); if ($page < 1 || $page > $this->np) {$page = 1; }
$sql='SELECT * FROM product where product_on_off=0 AND product_articul LIKE "%'.$artorname.'%"
ORDER BY product_articul LIMIT '.(($page - 1) * $this->MAX_COUNT).', '.$this->MAX_COUNT;
$res=$this->conn->query($sql);
if (!$res)
return false;
$num_product=$res->num_rows;
if ($num_product==0)
return false;
$res=$this->db_result_to_array($res);
return $res;
return $np;}
function db_result_to_array($res) {
for ($count=0; $row= $res->fetch_assoc(); $count++)
$res_array[$count] = $row;
return $res_array;
}
function page_idx()
{
@ $page = intval($_GET['page']); echo 'Страницы: ';
for ($i = 1; $i <= $this->np; $i++) {
if (@ $page != $i) {
print '<a href="?page='.$i.'"> ['.$i.']</a> ';}
else { print '<b>>'.$i.'<</b> '; }
}
На первый взгляд всё работает. Браузер мне выдаёт нужное количество товара, делит на правильное количество страниц, что-то типа:
товар 1
товар 2
.......
Страницы: [1][2][3]....
Но когда я нажимаю на 2, 3 и т. д. страницы, браузер мне сбрасывает фильтр, а высыпает весь товар из базы.
То есть, допустим, в базе 100 единиц товара, условию поиска удолетворяют 10. На странице выводим по 4 единицы товара. В итоге для начала получаем 25 страниц - всё отображается корректно: [1][2][3]....[25]. Когда щёлкаешь на каждую из страниц - всё правильно. После ввода условия отображаются [1][2][3] - это тоже всё хорошо. Но, когда щёлкаю на [2] или [3] получаю:
[1][2][3]....[25].