[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сбрасывается постраничный вывод из бд по фильтру
qazxcvbb
Вообщем использовал скрипт постраничного вывода данных из бд. В принципе все работает но при применение фильтров из селектов постраничный вывод правильно считает и выводит данные но при нажатие на определенную страницу или следующую страницу данные фильтра сбрасываются и выводиться все страницы и данные по первому условию. Не могу разобраться подскажите если кто знает.
</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>

вывел значение сессии, вставил этот кусок кода после filter и перед $result2
<?php
if (substr_count($_SERVER['REQUEST_URI'], 'page')) {
echo $_SESSION['filter'];
}else{
$_SESSION['filter'] = $filter;
echo $_SESSION['filter'];
}
if (!isset($_SESSION['filter'])) echo('Переменная blablabla не найдена в сессии');
?>

в навигации добавил на ссылку на следующую и предыдущую страницу вот это
<?php
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=tabl.php?view=osnov&page=1>Первая</a> | <a href=tabl.php?view=osnov&page='. ($page - 1) .'>Предыдущая</a> | ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' | <a href=tabl.php?view=osnov&page='. ($page + 1) .'>Следующая</a> | <a href=tabl.php?view=osnov&page=' .$total. '>Последняя</a>';
?>

выбираю в фильтре 2012 год и русский язык нажимаю применить первую страницу выводит правильно и сверху пишет AND `year`='2012' AND `lang`='русский' после нажатия на следующую страницу опять все сбрасывается(
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.