Вообщем, использовал скрипт постраничного вывода данных из бд. В принципе, все работает, но при применении фильтров из селектов постраничный вывод правильно считает и выводит данные, но при нажатие на определенную страницу или следующую страницу данные фильтра сбрасываются и выводяться все страницы и данные по первому условию. Не могу разобраться. Подскажите, если кто знает.
</head>
<body>
<form action="" method="POST">
<div class="right_container">
<div align="center">
<div class="filtr">
<span>ФИЛЬТР</span><br>
</div>
<br>
<select name="data[namev]" class="select">
<option value="" selected>Выберите номер</option>
<option value="без №">без №</option>
<option value="№1">№1</option>
<option value="№2">№2</option>
<option value="№3">№3</option>
<option value="№4">№4</option>
<option value="№5">№5</option>
<option value="№6">№6</option>
<option value="№7">№7</option>
<option value="№8">№8</option>
<option value="№9">№9</option>
<option value="№10">№10</option>
<option value="№11">№11</option>
<option value="№12">№12</option>
</select>
<br>
<?php
// устанавливаем первый и последний год диапазона
$yearArray = range(1800, 2030);
?>
<!-- выводим выпадающий список -->
<select name="data[year]" class="select">
<option value="" selected>Выберите год</option>
<?php
foreach ($yearArray as $year) {
// если вы хотите выбрать конкретный год
$selected = ($year == 1799) ? 'selected' : '';
echo '<option '.$selected.' value="'.$year.'">'.$year.'</option>';
}
?>
</select>
<br>
<select name="data[lang]" class="select">
<option value="" selected>Выберите язык</option>
<?php
$query = 'SELECT lang FROM lang';
$result = mysql_query ( $query ) or die ( 'Query failed: ' . mysql_error ( ) );
while ( $line = mysql_fetch_array ( $result, MYSQL_ASSOC ) ) {
echo '<option value="' . $line [ 'lang' ] . '">' . $line [ 'lang' ] . "</option>";
}
?>
</select>
<br>
<select name="data[sigla]" class="select">
<option value="" selected>Выберите местонахождение</option>
<?php
$query = 'SELECT name FROM sigla';
$result = mysql_query ( $query ) or die ( 'Query failed: ' . mysql_error ( ) );
while ( $line = mysql_fetch_array ( $result, MYSQL_ASSOC ) ) {
echo '<option value="' . $line [ 'name' ] . '">' . $line [ 'name' ] . "</option>";
}
?>
</select>
<br>
<input class="btn_search" type="submit" name="smb" value="Применить">
<p></p>
</div>
</div>
<div class="left_container">
<?php
$num = 10;
$page = $_GET['page'];
$result1 = mysql_query("SELECT COUNT(*) FROM `osnov` WHERE `name` LIKE '1%'");
$temp = mysql_fetch_array($result1);
$posts = $temp[0];
$total = (($posts - 1) / $num) + 1;
$total = intval($total);
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
$result = mysql_query("SELECT `name`, `year`, `namev`, `lang`, `vid`, `period`, `sigla` FROM `osnov` WHERE `name` LIKE '1%' LIMIT ".$start.", ".$num) or die('error!');
$filter = '';
if(isset($_POST['smb']))
{
$data = array(
'year' => '',
'lang' => '',
'sigla' => '',
'namev' => ''
);
$request = $_POST['data'];
foreach($request as $key => $value)
{
if( array_key_exists($key,$data) )
{
$data[$key] = $value;
}
}
foreach($data as $key => $value)
{
if( $value != '' )
{
$filter .= " AND `".$key."`='".$value."'";
}
}
$result2 = mysql_query("SELECT COUNT(*) from osnov WHERE `name` LIKE '1%'".$filter);
$temp = mysql_fetch_array($result2);
$posts = $temp[0];
$total = (($posts - 1) / $num) + 1;
$total = intval($total);
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
$result = mysql_query("SELECT `name`, `year`, `namev`, `lang`, `vid`, `period`, `sigla` FROM `osnov` WHERE `name` LIKE '1%'".$filter." LIMIT ".$start.", ".$num) or die('error!');
}
while ($row = mysql_fetch_array($result)) {
echo '<div class="boxer result">
<div class="box"><a class="result-item-title">' . $row['name'] . '</a>
<div class="result-item-detail">
<div class="box-row"><div class="result-item-detail-title">Год</div>
<div class="box"><span class="attr_title">' . $row['year'] . '</span></div></div>
<div class="box-row"><div class="result-item-detail-title">Номер</div>
<div class="box"><span class="attr_title">' . $row['namev'] . '</span></div></div>
<div class="box-row"><div class="result-item-detail-title">Язык</div>
<div class="box"><span class="attr_title">' . $row['lang'] . '</span></div></div>
<div class="box-row"><div class="result-item-detail-title">Вид</div>
<div class="box"><span class="attr_title">' . $row['vid'] . '</span></div></div>
<div class="box-row"><div class="result-item-detail-title">Периодичность</div>
<div class="box"><span class="attr_title">' . $row['period'] . '</span></div></div>
<div class="box-row"><div class="result-item-detail-title">Местонахождение</div>
<div class="box"><span class="attr_title">' . $row['sigla'] . '</span></div></div>
</div></div></div>';
}
?>
<?php
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=tabl.php?page=1>Первая</a> | <a href=tabl.php?page='. ($page - 1) .'>Предыдущая</a> | ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' | <a href=tabl.php?page='. ($page + 1) .'>Следующая</a> | <a href=tabl.php?page=' .$total. '>Последняя</a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href=tabl.php?page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
if($page - 4 > 0) $page4left = ' <a href=tabl.php?page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
if($page - 3 > 0) $page3left = ' <a href=tabl.php?page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if($page - 2 > 0) $page2left = ' <a href=tabl.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=tabl.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 5 <= $total) $page5right = ' | <a href=tabl.php?page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' | <a href=tabl.php?page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' | <a href=tabl.php?page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' | <a href=tabl.php?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href=tabl.php?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
// Вывод меню если страниц больше одной
if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}
?>
</div>
</form>
</body>
</html>
При выводе пагинации добавьте в этот участок кода параметры фильтра (год, номер, язык, вид, периодичность, местоположение):
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=tabl.php?page=1>Первая</a> | <a href=tabl.php?page='. ($page - 1) .'>Предыдущая</a> | ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' | <a href=tabl.php?page='. ($page + 1) .'>Следующая</a> | <a href=tabl.php?page=' .$total. '>Последняя</a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href=tabl.php?page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
if($page - 4 > 0) $page4left = ' <a href=tabl.php?page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
if($page - 3 > 0) $page3left = ' <a href=tabl.php?page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if($page - 2 > 0) $page2left = ' <a href=tabl.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=tabl.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 5 <= $total) $page5right = ' | <a href=tabl.php?page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' | <a href=tabl.php?page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' | <a href=tabl.php?page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' | <a href=tabl.php?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href=tabl.php?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
Например, можно формировать ссылки таким образом:
tabl.php?page=3&year=2017&namev=123&lang=ru
В самом скрипте надо ввести проверку на присутствие GET-переменных фильтра и если они есть, то при обращении к базе данных добавляем дополнительные условия.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Сейчас я вывожу в одном блоке количество выбранных элементов, в другом label выбранных элементов по порядку, не сортируя
Хочу реализовать всплывающее окно с контактами при наведении на номер телефона (те
Суть простая, есть (n) количество radio-кнопок из которой одна должна быть выбрана по умолчанию