Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: сессии
 
 автор: tstas   (17.09.2011 в 23:43)   письмо автору
 
 

Всем Привет! Есть форма передающая данные методом POST, есть обработчик который выводит данные постранично. Но работает только первая ссылка при переходе на следующие пишет не чего не найдено. Понял что POST данные теряются при переходе, нужно POST передать в SESSION, но не селен может подскажите. Заранее Спасибо.


<?php

// Коннект до базы данных
$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 (!isset(
$_POST['country'])) $_SESSION['country'] = $_POST['country'];


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='.($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='.$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='.($i+1).'><b>...</b></a> '


// Вывод ссылки на последнюю страницу 
if ($begin $show_link $pages_count) { 
echo 
' <a '.$style.' href='.$_server['php_self'].'?page='.$pages_count.'> >| </a>'

return 
true
// Конец функции

// Подготовка к постраничному выводу
$num 1// Количество отображаемых данных из БД

session_start ();

if (!isset(
$_POST['country'])) $_SESSION['country'] = $_POST['country'];

if (!empty(
$_GET['page']) || ($_GET['page'] <= 0)) {

$page 1;

} else {
$page =(int) $_GET['page']; // Считывание текущей страницы

}
// Общее количество информации

$count mysql_numrows(mysql_query("select event_subject, event_body from `phpbb_calendar_events` 
WHERE event_subject='"
$_POST['country'] ."' OR event_subject=event_body",$link)) 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'];

// Определяем общее число сообщений в базе данных
$result mysql_query("SELECT COUNT(*) FROM `phpbb_calendar_events`
 WHERE event_subject='"
$_POST['country'] ."'OR event_subject=event_body",$link);
 
$rgPosts mysql_fetch_row($result);
$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;
$result mysql_query("SELECT * FROM `phpbb_calendar_events` 
WHERE event_subject='"
$_POST['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($result)) 
{
   
$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_count10);

?>

  Ответить  
 
 автор: cheops   (18.09.2011 в 07:19)   письмо автору
 
   для: tstas   (17.09.2011 в 23:43)
 

Примерно так, как делеаете вы, только лучше session_start() вынести из тела функции. Вообще говоря, там где используется постраничная навигация принято данные передавать методом GET, чтобы посетители имели возможность сослаться на любую страницу постраничной навигации.

  Ответить  
 
 автор: tstas   (18.09.2011 в 15:54)   письмо автору
 
   для: cheops   (18.09.2011 в 07:19)
 

session_start() вынес, поставил первой строкой, пробовал менять POST на GET, но без результатов. Как то надо сессию дописать, наверно проверку и в ссылки, но не знаю как. Спасибо.

  Ответить  
 
 автор: sl1p   (18.09.2011 в 16:36)   письмо автору
 
   для: tstas   (18.09.2011 в 15:54)
 

вникните в то что тут написано :)

<?
if (!isset($_POST['country'])) $_SESSION['country'] = $_POST['country']; 

  Ответить  
 
 автор: tstas   (18.09.2011 в 18:07)   письмо автору
 
   для: sl1p   (18.09.2011 в 16:36)
 

Хотел прировнять $_POST['country'] к $_SESSION['country'], уже переделал $_SESSION['country'] = $_POST['country'];
Поставил в цикле echo $_SESSION['country'] выводит данные. Нужно передать в GET очевидно, но чего то туплю, не знаю.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования