Уроки Сортировка и выборка без кнопки применить
9 ноября 2012
5603
Сортировка и выборка

Сортировка и выборка без кнопки применить

Сложность Рубрика PHP
Демонстрация » Скачать »

Тема сегодняшнего урока Сортировка и выборка: без нажатия кнопки применить, выполнена языками программирования php и jQuery, также используется база данных mysql.

 

Данный материал, как я заметил, очень узко рассматривается на других сайтах и приходится изучать мануалы, искать на форумах информацию, чтобы полноценно понимать как устроен данный скрипт, подбирая адаптированный код. Стоит отметить, что сортировка используется на очень многих сайтах и ресурсах, позволяет выбирать нужные нам товары, новости, людей и прочие вещи, которые мы бы хотели конкретно охарактеризовать и найти.

Допустим аналогичный пример, я бы мог привести на сайте Кинозал ТВ, с помощью которого я могу ввести в поиск название фильма, выбрать его год, раздел, формат и нажать кнопочку применить (мы рассмотрим данный скрипт, с кнопкой применить, во втором уроке - Сортировка и выборка с кнопкой применить и выпадет список фильмов или фильм с данным запросом. Также советую посмотреть тему сортировка на PHP и MySQL, там добавлена еще и фильтрация по алфавиту, названию и прочему. Как видим, это очень удобно! Так вот, в этом уроке я научу Вас создавать данный скрипт и встраивать на свой сайт. Данный урок относится к категории среднего класса, поэтому для новичков я бы посоветовал изучить сначала азы программирования на php и javascript, а затем уже приступать к изучению данного урока. Верстка, надеюсь, уже изучена! И так, приступим...

 

Создаем файл bd.php - подключение к базе данных.

 

<?
$db = mysql_connect ("localhost", "Пользователь", "Пароль");
mysql_select_db ("База данных", $db);
if (!$db) echo mysql_error();
?>

 

Затем нам потребуются четыре таблицы, которые мы создадим в базе данных mysql:

 

 - Таблица с новостями.

 

--
-- Структура таблицы `1_news`
--

CREATE TABLE IF NOT EXISTS `1_news` (
  `id` int(50) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `text` text NOT NULL,
  `img` varchar(255) NOT NULL,
  `date` date NOT NULL,
  `author` int(5) NOT NULL,
  `cat` int(20) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `title` (`title`),
  FULLTEXT KEY `title_2` (`title`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=30 ;


 - Таблица с авторами.

 

--
-- Структура таблицы `1_author`
--

CREATE TABLE IF NOT EXISTS `1_author` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;

--
-- Дамп данных таблицы `1_author`
--

INSERT INTO `1_author` (`id`, `title`) VALUES
(1, 'Марк'),
(2, 'Миша'),
(3, 'Илья');

 

- Таблица с категориями новостей.

 

--
-- Структура таблицы `1_news_cat`
--

CREATE TABLE IF NOT EXISTS `1_news_cat` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;

--
-- Дамп данных таблицы `1_news_cat`
--

INSERT INTO `1_news_cat` (`id`, `title`) VALUES
(1, 'Компьютеры'),
(2, 'Машины'),
(3, 'Мотоциклы');

 

- Таблица с навигацией.

 

--
-- Структура таблицы `1_navigation`
--

CREATE TABLE IF NOT EXISTS `1_navigation` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `news` int(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;

--
-- Дамп данных таблицы `1_navigation`
--

INSERT INTO `1_navigation` (`id`, `news`) VALUES
(1, 5);

 

    И так, таблицы созданы, начнем реализовывать файл news.php. Стоит отметить, что вся выборка сохраняется в COOKIE, поэтому скрипт работает данным образом. Есть и другой вариант, его можно рассмотреть, как сохранение в SESSION, ну мы не будем изучать этот пример, а перейдем непосредственно к сортировке с использованием COOKIE.

 

<?
header('Content-Type: text/html; charset=windows-1251'); 
 //вывод кодировки

include ("bd.php"); //подключение к базе данных

/*Установка в cookie*/
$cat = '';
$author = '';
$date = '';
$search_string = '';

if (isset($_GET['cat'])) { $cat = $_GET['cat']; 
setcookie("cat", $_GET['cat'], time()+3600); }
elseif (isset($_COOKIE['cat'])) $cat = $_COOKIE['cat'];

if (isset($_GET['author'])) { $author = $_GET['author'];
 setcookie("author", $_GET['author'], time()+3600); }
elseif (isset($_COOKIE['author'])) $author = $_COOKIE['author'];

if (isset($_GET['date'])) { $date = $_GET['date']; 
setcookie("date", $_GET['date'], time()+3600); }
elseif (isset($_COOKIE['date'])) $date = $_COOKIE['date'];

if (isset($_GET['search_string'])) 
{ $search_string = $_GET['search_string']; 
setcookie("search_string", $_GET['search_string'], time()+3600); }
elseif (isset($_COOKIE['search_string'])) $search_string = 
$_COOKIE['search_string'];

$page = (isset($_GET['page'])) ? intval($_GET['page']) : 1;
?>

 

Далее подключаем три файла: один путь к стилям -  style.css, другие -  подключение файла javascript jquery-1.7.2.js и наш файл, который мы чуть позже создадим sort.js (он собственно и будет выполнять функции нашей сортировки). Выводим все разделы сортировки: категорию, автора, год, выбор страниц, поиск.

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Сортировка и выборка | php & mysql</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="js/sort.js"></script>
</head>

<body>

<form method="post" onsubmit="return false;" autocomplete="off">

<table class='width onetable'>
<tr>
<td>
<img src='http://www.roothelp.ru/logo.png'/>
</td>
<td>
<p class='rh_webstudia'>
Урок подготовлен web-студией roothelp.ru, 
благодарим за внимание!
</p>
<p class='rh_title'>
Сортировка и выборка | php & mysql
</p>
</td>
</tr>
</table>

<table class='width'>
<tr>

<td valign='top' width='400'>
<?php
//Выборка из таблицы 1_navigation поля news, в
 котором содержится число вывода новостей на страницу
$result77 = mysql_query("SELECT news FROM 1_navigation", $db);
$myrow77 = mysql_fetch_array($result77);
$limit = $myrow77["news"];

//установка определенного лемита вывода страниц из ячейки news
if ($_COOKIE['limit']) $limit = $_COOKIE['limit'];

//выборка категории для новостей
echo"<label class='sort_title'>Категории</label>
<div>
<select name='cat' id='cat'><option value=''>Не важно</option>";
$news_rh_cat = mysql_query ("SELECT id, title FROM 1_news_cat");
if(!$news_rh_cat)
{
echo"<p></p>";
exit (mysql_error());
}
if (mysql_num_rows($news_rh_cat)>0) {
$news_cat = mysql_fetch_array($news_rh_cat);
do {
?>
<option value="<?php echo $news_cat["id"];?>"
<? if ($news_cat["id"]==$cat) echo " selected"; ?>>
<?php echo $news_cat["title"]."";?></option>
<?php
}
while ($news_cat = mysql_fetch_array($news_rh_cat));
}
else
{
}
echo"
</select>
</div>
<br>";
?>
</td>

<td valign='top'  width='400'>
<?php
//Выборка автора
echo"<label class='sort_title'>Автор</label>
<div>
<select name='author' id='author'>";
$authorsql = mysql_query ("SELECT id, title FROM 1_author");
if(!$authorsql) 
{
echo"<p></p>";
exit (mysql_error());
}
if (mysql_num_rows($authorsql)>0)
{
$author1 = mysql_fetch_array($authorsql);
?><option value="">Не важно</option><?php
do
{
?><option value='<?=$author1['id']?>'<? if ($author1['id']==$author)
 echo " selected"; ?>><a href='news.php?author=<?=$author1['id']?>'>
<?=$author1['title']?></a></option><?

} while ($author1 = mysql_fetch_array($authorsql));
}
else
{
}
echo"
</select>
</div>
<br>";
?>
</td>

<td valign='top'  width='400'>
<?php
//Выборка года
echo"<label class='sort_title'>Год</label>
<div>
<select name='date' id='date'>";
?><option value="">Не важно</option><?php
$sqldate = mysql_query ("SELECT  id, date FROM 1_news ORDER BY
 date DESC");
$years = mysql_query ("SELECT distinct YEAR(date) FROM 1_news 
ORDER BY date DESC");

if(!$sqldate) 
{
exit (mysql_error());
}
if (mysql_num_rows($sqldate)>0)
{
$author1 = mysql_fetch_array($sqldate);
while ($year = mysql_fetch_array($years))
{
?><option value='<?=$year[0]?>'<? if ($year[0]==$date) echo " selected"; ?
>><?=$year[0]?></option><?
}
}
else
{
}
echo"
</select>
</div>
<br>";
?>
</td>
</tr>

<tr>
<td width='900' colspan='2'>
<label class='sort_title'>Поиск</label> <br>
<input id="search_string" type="text" class="sort_search" name="search_string"
 value="<?=$search_string?>">
</td>
<td width='20'>
<label class='sort_title'>Страниц</label>
<?
$limits = array(1000 => 'Все страницы', 1 => 1, 3=>3, 5=>5, 10 =>
 10, 25=> 25, 50 => 50)
?>
<div>
<select name='limit' id='limit'>
<?
//Выборка кол-во страниц навигации
foreach ($limits as $k => $v) {
$sel = '';
if ($limit == $k) $sel =" selected";
echo "<option value='".$k."'".$sel.">".$v."</option>";
}
?>
</select>
</div>
</td>	
</tr>

<tr>
<td colspan='5' valign='top'  class='width'>


   Теперь скрипт навигации, выводим его. Будьте внимательны, не пропустите сам идентификатор перевода id="results":

 

<? 
echo"<br>";
echo"<label class='sort_title'>Новости</label>";
echo"<br><br>";
/*Скрипт навигации*/
$query = "SELECT COUNT(*) FROM 1_news";
$wh = array();
if ($cat) $wh[] = "`cat`='".$cat."'";
if ($author) $wh[] = "`author`='".$author."'";
if ($date) $wh[] = "`date` LIKE '%".$date."%'";
if ($search_string) $wh[] = "`title` LIKE '%".$search_string."%'";

if (count($wh)>0) $query.= " WHERE ". implode(" AND ",$wh);

$result00 = mysql_query($query);
$temp = mysql_fetch_array($result00);

echo '<div id="results" name="results">';  // 
перенаправление на php файл results, с целью вывода сортировки
$total_pages = $temp[0];
$stages = 3;
if($page) $start = ($page - 1) * $limit; 
else $start = 0;	
if ($page == 0) $page = 1;

$prev = $page - 1;
$next = $page + 1;
$lastpage = ceil($total_pages/$limit);
$LastPagem1 = $lastpage - 1;
    
    
$paginate = '';
if($lastpage > 1)
{
$paginate .= "<div class='paginate'>";

if ($page > 1){$paginate.= "<a href='$targetpage?page=$prev'>
Предыдущая</a>";}
else{$paginate.= "<span class='disabled'>Предыдущая</span>";}

if ($lastpage < 7 + ($stages * 2))
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
}
elseif($lastpage > 5 + ($stages * 2))
{

if($page < 1 + ($stages * 2))
{
for ($counter = 1; $counter < 4 + ($stages * 2); $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
                }
$paginate.= "...";
$paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";
}
elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2))
{
$paginate.= "<a href='$targetpage?page=1'>1</a>";
$paginate.= "<a href='$targetpage?page=2'>2</a>";
$paginate.= "...";
for ($counter = $page - $stages; $counter <= $page + $stages;
 $counter++)
                {
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
$paginate.= "...";
$paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";
}

else
{
$paginate.= "<a href='$targetpage?page=1'>1</a>";
$paginate.= "<a href='$targetpage?page=2'>2</a>";
$paginate.= "...";
for ($counter = $lastpage - (2 + ($stages * 2)); $counter <=
 $lastpage; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
}
}
if ($page < $counter - 1){
$paginate.= "<a href='$targetpage?page=$next'>Следующая</a>";
}else{
$paginate.= "<span class='disabled'>Следующая</span>";
}
$paginate.= "</div>";
}

echo $paginate; //вывод навигации
echo"<br>";

 

Затем выводим новости.

 

             //начало запроса выборки из базы данных
$query = "SELECT 1_news.id, 1_news.title,
1_news.img, 1_news.date,
substr(1_news.text,1,600) as text,
(SELECT 1_author.title FROM 1_author
WHERE 1_author.id=1_news.author) AS author,
(SELECT 1_news_cat.title FROM 1_news_cat
WHERE 1_news_cat.id=1_news.cat) AS cat
FROM 1_news";

if ($cat!=NULL) $query.= " WHERE `cat` = '".$cat."' ";
else $query .= " WHERE 1=1 ";
if($author != null){$query .= "and author='$author'";}
if($date != null){$query .= " and date like '%$date%'";}
if($search_string != null){$query .= " and title like
'%$search_string%'";}
$query .= " ORDER BY date DESC LIMIT $start, $limit";

$news_rh = mysql_query ($query, $db);

if (!$news_rh)
{
echo "<p>При данной выборке нет новостей в базе!
Попробуйте выбрать с другими параметрами!</p>";
exit(mysql_error());
}

if (mysql_num_rows($news_rh) > 0)

{
$news = mysql_fetch_array($news_rh);

do
{
printf("
<table cellspacing='0' cellpadding='0'
class='table_sort'>
<tr>
<td colspan='2'>
<p class='table_title'>%s</p>
</td>
<td>
</td>
</tr>
<tr>
<td valign='top'>
<img src='%s' class='table_img'/>
</td>
<td valign='top'>
<span class='table_sort_title'>Категория: </span>
<span class='table_sort_answer'>%s</span><br>
<span class='table_sort_title'>Автор: </span>
<span class='table_sort_answer'>%s</span><br>
<span class='table_sort_title'>Создана: </span>
<span class='table_sort_answer'>%s</span><br>
</td>
</tr>
<tr>
<td valign='top' colspan='2'>
<div class='table_text'>%s</div>
</td>
</tr>
</table>",  $news["title"],  $news["img"],
$news["cat"], $news["author"], $news["date"],
$news["text"]);
}
while ($news = mysql_fetch_array($news_rh));
}
echo"</div>";
?>

 

 Тут, пожалуй все просто, сложностей особых нет, единственное, что стоит объяснить, это про поиск, который работает с помощью функции  mysql_escape_string( iconv("utf-8", "windows-1251",  лимит на вывод новостей устанавливается тут $limit = ($_POST['limit']) ? intval($_POST['limit']) : 5; , и так сам код:

  И так, с файлом news.php мы успешно справились, теперь перейдем к файлу results.php.

 

<?php
header('Content-Type: text/html; charset=windows-1251'); 
 //вывод кодировки

include ("bd.php"); //подключение к базе данных

/*Применение технологии cookie*/
$cat = ($_POST['cat']) ? intval($_POST['cat']) : '';
$author = ($_POST['author'])  ? intval($_POST['author']) : '';;
$date = ($_POST['date']) ? intval($_POST['date']) : '';;
$search_string = ($_POST['search_string']) ? mysql_escape_string( 
iconv("utf-8", "windows-1251", $_POST['search_string'])) : '';
$limit = ($_POST['limit']) ? intval($_POST['limit']) : 5;

setcookie("cat", $cat, time()+3600);
setcookie("author", $author, time()+3600);
setcookie("date", $date, time()+3600);
setcookie("search_string", $search_string, time()+3600);
setcookie("limit", $limit, time()+3600);

$page = (isset($_GET['page'])) ? intval($_GET['page']) : 1;

$query = "SELECT COUNT(*) FROM 1_news";
$wh = array();
if ($cat) $wh[] = "`cat`='".$cat."'";
if ($author) $wh[] = "`author`='".$author."'";
if ($date) $wh[] = "`date` LIKE '%".$date."%'";
if ($search_string) $wh[] = "`title` LIKE '%".$search_string."%'";

if (count($wh)>0) $query.= " WHERE ". implode(" AND ",$wh);

$result00 = mysql_query($query);
$temp = mysql_fetch_array($result00);
$total_pages = $temp[0];
$stages = 3;
if($page) $start = ($page - 1) * $limit;
else $start = 0;
if ($page == 0) $page = 1;

$prev = $page - 1;
$next = $page + 1;
$lastpage = ceil($total_pages/$limit);
$LastPagem1 = $lastpage - 1;


$paginate = '';
if($lastpage > 1)
{
$paginate .= "<div class='paginate'>";

if ($page > 1){$paginate.= "<a href='$targetpage?page=$prev'>
Предыдущая</a>";}
else{$paginate.= "<span class='disabled'>Предыдущая</span>";}

if ($lastpage < 7 + ($stages * 2))
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
}
elseif($lastpage > 5 + ($stages * 2))
{

if($page < 1 + ($stages * 2))
{
for ($counter = 1; $counter < 4 + ($stages * 2); $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
                }
$paginate.= "...";
$paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";
}
elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2))
{
$paginate.= "<a href='$targetpage?page=1'>1</a>";
$paginate.= "<a href='$targetpage?page=2'>2</a>";
$paginate.= "...";
for ($counter = $page - $stages; $counter <= $page + $stages; 
$counter++)
                {
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
$paginate.= "...";
$paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";
}

else
{
$paginate.= "<a href='$targetpage?page=1'>1</a>";
$paginate.= "<a href='$targetpage?page=2'>2</a>";
$paginate.= "...";
for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= 
$lastpage; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
}
}
if ($page < $counter - 1){
$paginate.= "<a href='$targetpage?page=$next'>Следующая</a>";
}else{
$paginate.= "<span class='disabled'>Следующая</span>";
}
$paginate.= "</div>";
}

echo $paginate; //вывод навигации
echo"<br>";

//начало запроса выборки из базы данных
$query = "SELECT 1_news.id, 1_news.title, 1_news.img, 
1_news.date,
substr(1_news.text,1,600) as text,
(SELECT 1_author.title FROM 1_author WHERE 
1_author.id=1_news.author) AS author,
(SELECT 1_news_cat.title FROM 1_news_cat WHERE 
1_news_cat.id=1_news.cat) AS cat
FROM 1_news";

if ($cat!=NULL) $query.= " WHERE `cat` = '".$cat."' ";
else $query .= " WHERE 1=1 ";
if($author != null){$query .= "and author='$author'";}
if($date != null){$query .= " and date like '%$date%'";}
if($search_string != null){$query .= " and title like 
'%$search_string%'";}
$query .= " ORDER BY date DESC LIMIT $start, $limit";

$news_rh = mysql_query ($query, $db);

if (!$news_rh)
{
echo "<p>При данной выборке нет новостей в базе! 
Попробуйте выбрать с другими параметрами!</p>";
exit(mysql_error());
}

if (mysql_num_rows($news_rh) > 0)

{
$news = mysql_fetch_array($news_rh);

do
{
printf("
<table cellspacing='0' cellpadding='0' class='table_sort'>
<tr>
<td colspan='2'>
<p class='table_title'>%s</p>
</td>
<td>
</td>
</tr>
<tr>
<td valign='top'>
<img src='%s' class='table_img'/>
</td>
<td valign='top'>
<span class='table_sort_title'>Категория: 
</span><span class='table_sort_answer'>%s
</span><br>
<span class='table_sort_title'>Автор: </span>
<span class='table_sort_answer'>%s</span><br>
<span class='table_sort_title'>Создана: 
</span><span class='table_sort_answer'>%s</span><br>
</td>
</tr>
<tr>
<td valign='top' colspan='2'>
<div class='table_text'>%s</div>
</td>
</tr>
</table>",  $news["title"], $news["img"], $news["cat"], 
$news["author"], $news["date"], $news["text"]);
}
while ($news = mysql_fetch_array($news_rh));
}
else
{
echo "<p>При данной выборке нет новостей в базе!
 Попробуйте выбрать с другими параметрами!</p>";
}
echo"</div>";
?>

 

  Добавим стили файл style.css:

 

/*Урок подготовлен web-студией roothelp.ru*/

/*Основные стили*/

.,html,img, body
{
margin: 0px;
padding: 0px
border: 0px;
}

.width
{
width: 1000px;
}

.onetable
{
background: #6eaaff;
height: 100px;
}

.sort_search
{
width: 800px;
}

.sort_title
{
color: blue;
}

.table_sort
{
border-top: 1px dotted black;
padding: 5px;
width: 800px;
}

.table_title
{
font-size: 18px;
color: grey;
font-weight: bold;
padding-top: 10px;
padding-bottom: 20px;
}

.table_img
{
width: 100px;
}

.table_sort_title
{
font-size: 14px;
color: black;
font-weight: bold;
}

.table_sort_answer
{
font-size: 14px;
color: black;
}

.table_text
{
padding-top: 10px;
width: 800px;
text-align: justify;
font-size: 14px;
color: black;
}

/*Навигация*/

.paginate {
font-family:Arial, Helvetica, sans-serif;
padding: 3px;
margin: 3px;
}

.paginate a {
padding:2px 5px 2px 5px;
margin:2px;
border:1px solid #999;
text-decoration:none;
color: #666;
}
.paginate a:hover, .paginate a:active {
border: 1px solid #999;
color: #000;
}
.paginate span.current {
margin: 2px;
padding: 2px 5px 2px 5px;
border: 1px solid #999;
font-weight: bold;
background-color: #999;
color: #FFF;
}

.paginate span.disabled {
padding:2px 5px 2px 5px;
margin:2px;
border:1px solid #eee;
color:#DDD;
}

li{
padding:4px;
margin-bottom:3px;
background-color:#FCC;
list-style:none;}

ul{
margin:6px;
padding:0px;
}

 

Давайте теперь создадим две папки, одну js и img.

Сначала начнем с js, в ней как мы уже говорили будут хранится два файла jquery-1.7.2.js сам код файла sort.js:

 

(function ($) {   
function search(){
        
var cat = $("#cat").val();
var author = $("#author").val();
var date = $("#date").val();
var search_string =
$("#search_string").val();
var limit = $("#limit").val();
        
        var sort = {
            url: "results.php",
            type: "POST",
            data: "cat=" + cat +
      "&author=" + author +
      "&date=" + date + "&limit=
      " + limit + "&search_string=
      " + search_string,
            dataType: "html",
            cache: false,
            success: function(data) {
                $("#results").html(data);
            },
            error: function() {
$("#results").html('error occured');
            }
        };   
        $.ajax(sort);
    };
    
    $(document).ready(function(){
        $("select#cat").change(function(){
       		search();
        });
        $("select#author").change(function(){
       		search();
        });
        $("select#date").change(function(){
       		search();
        });
        $("#search_string").keyup(function(){
       		search();
        });
        $("#limit").change(function(){
       		search();
        });
    });
    
})(jQuery); 

 

Как мы видим, sort.js работает с файлом results.php и с идентификатором id="results", который был подключен для сортировки в файле news.php. Теперь в папку img мы загрузим картинки самих новостей.

 

Ну что ж, надеюсь данный урок Вам помог в реализации у себя на сайте, либо в каком-нибудь другом примере, где можно его применить. В следующем, уроке по "сортировке и выборке", я объясню Вам как можно создать аналогичный скрипт, только с кнопкой "применить".

 

Спасибо за внимание, всем удачи!





Роман Краутер