Тема: Сессии и постраничный вывод
Всем Привет! Есть форма передающая данные методом POST, есть обработчик который выводит данные постранично. Но работает только первая ссылка при переходе на следующие пишет не чего не найдено. Понял что POST данные теряются при переходе, нужно POST передать в SESSION, но не селен может подскажите. Заранее Спасибо.
<?php
session_start ();
session_register('country');
$_SESSION['country'] = $_POST['country'];
$country = $_SESSION['country'];
error_reporting(E_ALL);
// Коннект до базы данных
$link = mysql_connect('localhost', 'root', 'root');
if (!$link) die('Не могу соединиться с базой данных');
// Выбираем базу данных
mysql_select_db('test8', $link);
//Устанавливаем кодировку UTF8
mysql_query ("SET NAMES utf8");
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
function mymenu($page, $count, $pages_count, $show_link)
{
// $show_link - это количество отображаемых ссылок;
// нагляднее будет, когда это число будет парное
// Если страница всего одна, то вообще ничего не выводим
session_start ();
if ($pages_count == 1) return false;
$sperator = ' '; // Разделитель ссылок; например, вставить "|" между ссылками
// Для придания ссылкам стиля
$style = 'style="color: #808000; text-decoration: none;"';
$begin = $page - intval($show_link / 2);
unset($show_dots); // На всякий случай :)
// Сам постраничный вывод
// Если количество отображ. ссылок больше кол. страниц
if ($pages_count <= $show_link + 1) $show_dots = 'no';
// Вывод ссылки на первую страницу
if (($begin > 2) && ($pages_count - $show_link > 2)) {
echo '<a '.$style.' href='.$_SERVER['PHP_SELF'].'?page=1> |< </a> ';
}
for ($j = 0; $j <= $show_link; $j++) // Основный цикл вывода ссылок
{
$i = $begin + $j; // Номер ссылки
// Если страница рядом с началом, то увеличить цикл для того,
// чтобы количество ссылок было постоянным
if ($i < 1) continue;
// Подобное находится в верхнем цикле
if (!isset($show_dots) && $begin > 1) {
echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.$_SESSION['country'].''.($i-1).'><b>...</b></a> ';
$show_dots = "no";
}
// Номер ссылки перевалил за возможное количество страниц
if ($i > $pages_count) break;
if ($i == $page) {
echo ' <a '.$style.' ><b>'.$i.'</b></a> ';
} else {
echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.$_SESSION['country'].''.$i.'>'.$i.'</a> ';
}
// Если номер ссылки не равен кол. страниц и это не последняя ссылка
if (($i != $pages_count) && ($j != $show_link)) echo $sperator;
// Вывод "..." в конце
if (($j == $show_link) && ($i < $pages_count)) {
echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.$_SESSION['country'].''.($i+1).'><b>...</b></a> ';
}
}
// Вывод ссылки на последнюю страницу
if ($begin + $show_link + 1 < $pages_count) {
echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.$_SESSION['country'].''.$pages_count.'> >| </a>';
}
return true;
} // Конец функции
// Подготовка к постраничному выводу
$num = 1; // Количество отображаемых данных из БД
if (!empty($_GET['page']) || ($_GET['page'] <= 0)) {
$page = 1;
} else {
$page =(int) $_GET['page']; // Считывание текущей страницы
}
// Общее количество информации
if(!isset($_SESSION['country']) || $_POST['country'] > 1)
{$_POST['country'] = $_SESSION['country'];}
if(!isset($_POST['country']) || ($_SESSION['country']) > 1)
{ $_SESSION['country'] = $_GET['page'];
}
$country = $_SESSION['country'];
if ($country) {
print "Вы выбрали <b>$country</b>.
<br />";
$q = "select event_subject, event_body from `phpbb_calendar_events`
WHERE event_subject='".$country."' OR event_subject=event_body";
$count = mysql_num_rows(mysql_query($q)) or die('error! Записей не найденоoooo!');
$pages_count = ceil($count / $num); // Количество страниц
// Если номер страницы оказался больше количества страниц
if ($page > $pages_count) $page = $pages_count;
$start_pos = ($page - 1) * $num; // Начальная позиция, для запроса к БД
}
$numchar = 300;
// Извлекаем из URL текущую страницу
$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$res = mysql_query("SELECT COUNT(*) FROM `phpbb_calendar_events`
WHERE event_subject='".$country."' OR event_subject=event_body",$link);
$rgPosts = mysql_fetch_row($res);
$posts=$rgPosts[0];
$total = intval(($posts - 1) / $num) + 1;
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
$res = mysql_query("SELECT * FROM `phpbb_calendar_events`
WHERE event_subject='".$country."' OR event_subject=event_body LIMIT $start, $num",$link) or die (mysql_error());
$table = "<table border=3 width=30% align=center>\n";
while ( $i = mysql_fetch_assoc($res))
{
$table .= "<tr>\n";
$table .= "<td>".$i['event_subject']."</td>\n";
$table .= "<td>".$i['event_body']."</td>\n";
$table .= "</tr>\n";
}
$table .= "</table>\n";
echo $table;
mymenu($page, $count, $pages_count, 10);
?>