Особенности кода: Контекстный поиск отдельных слов, введенных через пробел в строке запроса Подсветка найденных фрагментов Сортировка по цене или по наименованию Постраничный вывод, номера страниц выводятся сверху и снизу Код: <?php // подключение к базе MySql require_once($_SERVER['DOCUMENT_ROOT'].'/config.php'); // если передан поисковый запрос if($q){ $ar_q=explode(" ", $q); $add_sql=''; for($i=0;$i<count($ar_q);$i++) $add_sql.=' ((locate("'.strtolower(addslashes($ar_q[$i])).'",lower(price.name))>0) or'. ' ("'.strtolower(addslashes($ar_q[$i])).'"=lower(price.kod_prodact))) and'; $add_sql=' WHERE'.$add_sql.' ost<>"нет"'; $add_q=($q?'&q='.urlencode($q):''); }else{ $add_sql=' WHERE ost<>"нет"'; $add_q=''; } // Общее количество информации //$count = mysql_numrows(sql('SELECT * from price '.$add_sql)); $row = mysql_fetch_assoc(sql('SELECT count(*) as counter from price '.$add_sql)); $perpage = 20; // Количество отображаемых данных из БД на одной странице $count=intval($row['counter']); // общее кол-во товаров if($count){ $pages_count = ceil($count / $perpage); // Количество страниц // Если номер страницы оказался больше количества страниц if ($page > $pages_count) $page = $pages_count; $start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД $bar=link_bar($page, $count, $pages_count, 8); echo $bar; // сортировка по наименованию или цене $ord = @$_GET['ord']; if(($ord<>'name')&&($ord<>'price'))$ord='name'; if($ord=='price'){ print "<h3><a href=\"".$_SERVER['PHP_SELF'].'?page='.$page.$add_q."\">Наименование</a></h3> ↓Цена<a href='#price'><sup>*</sup></a> \n"; $add_q.='&ord=price'; }else print "<h3>↓Наименование</h3> <a href=\"".$_SERVER['PHP_SELF'].'?page='.$page.$add_q."&ord=price\">Цена</a> \n"; // Вывод информации из базы данных $result = sql('SELECT * from price '.$add_sql.' ORDER BY '.$ord.' LIMIT '.$start_pos.', '.$perpage); while ($row = mysql_fetch_assoc($result)) { $name=($q?preg_replace("/(".str_replace('/','\/',$q).")/si",'<font color=red>\\1</font>',htmlspecialchars($row['name'])):htmlspecialchars($row['name']));// Подсветка print "<h3 id='n".$row['id']."'>".$name."</h3> ".number_format($row['price'], 0, '.', ' ')." руб."; // цена } echo " <br clear=all />$bar<span class='it'>".($q?"Найдено по запросу":"Всего")." <b>".number_format($count, 0, '.', ' ')."</b> товаров.</span>"; }else print "<h3>По вашему запросу ничего не найдено!</h3>"; ?> Функция вывода постраничной навигации: Код: <?php function link_bar($page, $count, $pages_count, $show_link) {global $add_q; // $show_link - это количество отображаемых ссылок; // нагляднее будет, когда это число будет парное // Если страница всего одна, то вообще ничего не выводим if ($pages_count == 1) return ''; $out=''; $begin = $page - intval($show_link / 2); // Сам постраничный вывод // Если количество отображ. ссылок больше кол. страниц if ($pages_count <= $show_link + 1) $show_dots = 'no'; // Вывод ссылки на первую страницу if (($begin > 2) && ($pages_count - $show_link > 2)) $out.='<a href="'.$_SERVER['PHP_SELF'].'?page=1'.$add_q.'" title="в начало"> << </a> '; for ($j = 0; $j <= $show_link; $j++) // Основный цикл вывода ссылок { $i = $begin + $j; // Номер ссылки // Если страница рядом с началом, то увеличить цикл для того, // чтобы количество ссылок было постоянным if ($i < 1) continue; // Подобное находится в верхнем цикле if (!isset($show_dots) && $begin > 1) { $out.=' <a href="'.$_SERVER['PHP_SELF'].'?page='.($i-1).$add_q.'"><b>...</b></a> '; $show_dots = "no"; } // Номер ссылки перевалил за возможное количество страниц if ($i > $pages_count) break; if ($i == $page) $out.=' <a><b>'.$i.'</b></a> '; else $out.=' <a href="'.$_SERVER['PHP_SELF'].'?page='.$i.$add_q.'">'.$i.'</a> '; // Если номер ссылки не равен кол. страниц и это не последняя ссылка if (($i != $pages_count) && ($j != $show_link)) $out.=' ';// Разделитель ссылок // Вывод "..." в конце if (($j == $show_link) && ($i < $pages_count)) $out.=' <a href="'.$_SERVER['PHP_SELF'].'?page='.($i+1).$add_q.'"><b>...</b></a> '; } // Вывод ссылки на последнюю страницу if ($begin + $show_link + 1 < $pages_count) $out.=' <a href="'.$_SERVER['PHP_SELF'].'?page='.$pages_count.$add_q.'" title="в конец"> >> </a>'; return "\n".$out."\n"; } // Конец функции ?>