[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Постраничный вывод результата после поиска PHP
Адам
Доброго времени суток, у меня такая проблема...

С формы посылается запрос $_POST[nmag] дальше из пост в сессию записываю ...
этот файл выводит на экран записи по запросу, как только я нажимаю переход на другую страницу ( 2 или > ) запрос теряет переменную $_SESSION[nmag].

Этот файл обрабатывает запрос, а формирует ссылки другой файл, он работает нормально... если нужно будет скину

<?php
session_start();
include ('db_conn.php');
include ('functions2.php');
if(isset($_POST['submit']))
{
$submit = $_POST['submit'];
}
if(isset($_SESSION['nmag']))
{
$nmag = $_SESSION['nmag'];
}
$nmag = trim($nmag);
$nmag = stripslashes($nmag);
$nmag = htmlspecialchars($nmag);

@$page = $_GET['page'];
if(!isset($_GET['page'])){
$p = 1;
}
else{
$p = addslashes(strip_tags(trim($_GET['page'])));
if($p < 1) $p = 1;
}
$num_elements = 5;
$_SESSION['nmag'] = $_POST['nmag'];
$total = mysql_result(mysql_query("SELECT COUNT(*) FROM categories WHERE cat_name like '%".$_SESSION['nmag']."%' ORDER BY data ASC"),0,0);
$num_pages = ceil($total / $num_elements);
if ($p > $num_pages) $p = $num_pages;
$start = ($p - 1) * $num_elements;
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<
title><? echo "Результаты по запросу - $nmag"; ?></title>
<
link rel="stylesheet" type="text/css" href="1.css">
<
link rel="stylesheet" type="text/css" href="css/1.css">


<
style type="text/css">
<!--
.
стиль2 {font-size: 24px}
-->
</
style>
</
head>
<
body>
<
span class="стиль2">Результаты поиска</span>

<
span class="стиль2">
<
script type="text/javascript" src="/templates/pcv/js/pcvector.js"></script>
</
span>
<
blockquote>
<
p class="стиль16">
<?php
$sel = "SELECT * FROM categories WHERE cat_name like '%".$_SESSION['nmag']."%' ORDER BY data ASC LIMIT ".$start.", ".$num_elements;
echo 'запрос<p>';
echo $sel;
echo '</p><p>Слово в переменной Сессии - </p>';
echo $_SESSION['nmag'];
$query = mysql_query($sel);
if(mysql_num_rows($query)>0){
?>
</p>
</
blockquote>
<
table width="75%" align="center" cellpadding="15">
<
tr>
<
th>Дата</th>
<
th>Название</th>
<
th>Ссылка</th>
</
tr>
<?php

while($res = mysql_fetch_array($query)){

echo "
<br>
<center>
<table width='75%' align='center'>
<tr>
<td width='25%' align=center bgcolor=silver>
$res[data]</td>
<td width='25%' align=center bgcolor=silver>
$res[cat_name]</td>
<td width='25%' align=center bgcolor=silver><a href='http://
$res[cat_url]'>Ссылка на альбом</a></td>

</tr>
</table>
"
;
} echo 'Страница ';
echo GetNav($p, $num_pages);
?>
</table>

<
p>
<?php
print"
<table align='left' width='30%'>
<tr><td>Всего записей -
$total </td></tr>
<tr><td>Количество записей на страницу -
$num_elements</td></tr></table>
<p align='center'><a href='search_foto.php'>Назад</a></p>
"

;
}
?>
</body>
</
html>




Спустя 20 минут, 17 секунд (31.07.2012 - 00:58) Игорь_Vasinsky написал(а):
Цитата
если нужно будет скину

webmoney??? biggrin.gif

покажи что в GetNav()

Спустя 3 минуты, 30 секунд (31.07.2012 - 01:02) Адам написал(а):
Это include ('functions2.php');


<?php
function
GetNav($p, $num_pages){

//Проверяем нужна ли ссылка "На первую"
if($p > 2){
$first_page = ' <a href="search12.php?page=1"><<</a> '; //или просто $first_page = '<a href="/index.php"><<</a>';
}
else{
$first_page = '';
}

//Проверяем нужна ли ссылка "На последнюю"
if($p < ($num_pages - 2)){
$last_page = ' <a href="search12.php?page= '.$num_pages.'">>></a> ';
}
else{
$last_page = '';
}

//Проверяем нужна ли ссылка "На предыдущую"
if($p > 1){
$prev_page = ' <a href="search12.php?page= '.($p - 1).'"><</a> ';
}
else{
$prev_page = '';
}

//Проверяем нужна ли ссылка "На следущую"
if($p < $num_pages){
$next_page = ' <a href="search12.php?page= '.($p + 1).'">></a> ';
}
else{
$next_page = '';
}

//Формируем по 2 страницы до и после текущей (при наличии таковых, конечно):
if($p - 2 > 0){
$prev_2_page = ' <a href="search12.php?page='.($p - 2).'">'.($p - 2).'</a> ';
}
else{
$prev_2_page = '';
}
if($p - 1 > 0){
$prev_1_page = ' <a href="search12.php?page='.($p - 1).'">'.($p - 1).'</a> ';
}
else{
$prev_1_page = '';
}
if($p + 2 <= $num_pages){
$next_2_page = ' <a href="search12.php?page='.($p + 2).'">'.($p + 2).'</a> ';
}
else{
$next_2_page = '';
}
if($p + 1 <= $num_pages){
$next_1_page = ' <a href="search12.php?page='.($p + 1).'">'.($p + 1).'</a> ';
}
else{
$next_1_page = '';
}
$nav = $first_page.$prev_page.$prev_2_page.$prev_1_page.$p.$next_1_page.$next_2_page.$next_page.$last_page;
return $nav;
}
?>

Спустя 15 минут, 6 секунд (31.07.2012 - 01:17) Игорь_Vasinsky написал(а):
а где ты инициализируешь $_SESSION['nmag']?

Спустя 6 минут, 4 секунды (31.07.2012 - 01:23) Адам написал(а):
Цитата
а где ты инициализируешь $_SESSION['nmag']?

с этим недавно столкнулся, всё время с POST работал, в интернете вычитал что можно использовать сессии. особо не представляю о чем ты говоришь)) как я понимаю где я определяю эту переменную ?
я вот так написал
$_SESSION['nmag'] = $_POST['nmag'];

Спустя 13 минут, 8 секунд (31.07.2012 - 01:36) kamanch написал(а):
Нет.
Eсли в скрипте ты обращаешься к массиву $_SESSION, то до того, как ты что-либо запишешь в него или считаешь, ты должен инициилизировать сессию функцией session_start();
И это должно быть в каждом файле, где идет обращение к сессиям.

Учти, что session_start(); должна быть вызвана ДО любого вывода чего-либо в браузер.

Спустя 15 минут, 11 секунд (31.07.2012 - 01:51) Адам написал(а):
Цитата
Учти, что session_start(); должна быть вызвана ДО любого вывода чего-либо в браузер.

ну у меня инициализация проходит так
посылаю запрос с формы -> открывается сессия...
<?php
session_start();
include ('db_conn.php');
include ('functions2.php');

выводится результат)

Спустя 8 минут, 35 секунд (31.07.2012 - 02:00) kamanch написал(а):
Да, всё понятно. Все идут спать. biggrin.gif
А то щас напишем...

Спустя 34 минуты, 26 секунд (31.07.2012 - 02:34) Адам написал(а):
Цитата
Учти, что session_start(); должна быть вызвана ДО любого вывода чего-либо в браузер.

спасибо) Сессию открыл чуть раньше, до ввода на форме всё работает атлично)
Быстрый ответ:

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