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

Форум MySQL

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

 

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

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

тема: Постраничная навигация. Как предать переменную $_POST?
 
 автор: Phyto   (15.06.2008 в 14:03)   письмо автору
 
 

Как предать переменную $_POST, полученную из формы типа "список" на следующую страницу для корректной реализации постраничной навигации?
При работе приведенного ниже кода. первая страница выводится в полном соотвествии с задуманным. Когда переходишь на любую из последующих страниц с результатами поиска, то выводятся не следующие по порядку несколько выбранных строк, а все содержимое таблицы полностью. То бишь создается ощущение, что запрос идет "пустой", без передачи нужных критериев отбора записей.
Переменная сеанса тоже не передается.

Код (основа взята из книги "MySQL на примерах"):


<?php


//Пытаюсь изобразить сеанс
//Устанавливаю переменные сеанса
session_start();
$theme = $_POST['theme_'];

$_SESSION['theme']= $theme ;


// Устанавливаю связь с сервером Мускул

require_once("connect.php");

//число позиций на странице
$pnumber = 3;

// Проверяем, передан ли номер текущей страницы
if(isset($_GET['page']))
$page = $_GET['page'];
else $page = 1;

// Начальная позиция
$start = ($page - 1)*$pnumber;


// Создаю запрос и извлекаю данные из таблицы по критерию отбора с ограничением вывода на 1 страницу
$query = "SELECT * FROM `articles` WHERE `theme` LIKE '%".$theme."%' LIMIT $start, $pnumber";
$result= mysql_query($query);

//То же самое только без ограничения для подсчета общего кол-ва найденных статей
$query1 = "SELECT * FROM `articles` WHERE `theme` LIKE '%".$theme."%' ";
$result1= mysql_query($query1);
$num_row = mysql_num_rows($result1);


// Вывожу результат

if ($result)

echo "<h2>Результат поиска:</h2>";
echo "В разделе <font size='4'><b><i>".$theme."</i></b></font> найдено
<font size='4'><b>" .$num_row. "</b></font> статей (-и).<br>";


while ($row = mysql_fetch_array($result))

{echo "<p><table width=75% border='0'>
<tr> <td width='30'></td>
<td width='250'>Название статьи:</td>
<td><strong>".$row ['art_name']."</strong></td>
</tr>
<tr><td width='30'></td>
<td width='250'>Автор: </td>
<td> <strong>".$row ['autor']."</strong></td>
</tr>
<tr> <td width='30'></td>
<td width='250'>Резюме статьи:</td>
<td><i>".$row ['art_dcrb']."</i></td>
</tr>
<tr> <td width='30'></td>
<td width='250'>Дата добавления:</td>
<td><strong>".$row ['inser_data']."</strong></td>
</tr>
<tr> <td width='30'></td>
<td width='250'><a href=".$row ['art_url'].">Читать статью >>></a></td>
<td><strong></strong></td>
</tr>
</table><br>";

}



echo "<p><p><a href='../search_art.php'>Искать еще!</a><br><br><br>";

// Количество страниц
$query = "SELECT COUNT(*) FROM articles WHERE `theme` LIKE '%".$theme."%'";
$tot = mysql_query($query);
if(!$tot) exit(mysql_error());
$total = mysql_result($tot,0);
$number = (int)($total/$pnumber);
if((float)($total/$pnumber) - $number != 0) $number++;

// Постраничная навигация
for($i = 1; $i <= $number; $i++)
{
if($i != $number)
{
if($page == $i)
{
echo "[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]&nbsp;";
}
else
{
echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".
(($i - 1)*$pnumber + 1)."-".
$i*$pnumber."]</a>&nbsp;";
}
}
else
{
if($page == $i)
{
echo "[".(($i - 1)*$pnumber + 1)."-".($total - 1)."]&nbsp;";
}
else
{
echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".
(($i - 1)*$pnumber + 1)."-".
$total."]</a>&nbsp;";
}
}
}



?>

   
 
 автор: Trianon   (15.06.2008 в 14:11)   письмо автору
 
   для: Phyto   (15.06.2008 в 14:03)
 

Придется параметры запроса передавать либо GET-параметрами (в ссылках навигации),
либо держать их в сессии. Сам по себе набор переменных полей формы в get-запрос не уйдет.

Вопрос не имеет никакого отношения к MySQL.

   
 
 автор: Phyto   (15.06.2008 в 15:30)   письмо автору
 
   для: Trianon   (15.06.2008 в 14:11)
 

Спасибо за ответ!

То, о чем Вы говорите, я понимаю и сам. Я не понимаю, почему значение $_SESSION['theme'], которой я присвоил $theme = $_POST['theme_'], не передается с сессией на следующую страницу?

Так как Вопрос не имеет никакого отношения к MySQL, должен ли я с ним перейти в форум РНР?

   
 
 автор: Trianon   (15.06.2008 в 15:50)   письмо автору
 
   для: Phyto   (15.06.2008 в 15:30)
 

>То, о чем Вы говорите, я понимаю и сам. Я не понимаю, почему значение $_SESSION['theme'], которой я присвоил $theme = $_POST['theme_'], не передается с сессией на следующую страницу?

Если следующую страницу выводит тот скрипт, который Вы привели в первом сообщении,
то эти две строки
$theme = $_POST['theme_'];
$_SESSION['theme']= $theme ;

значение в сессии затирают. Поскольку массив $_POST при GET-запросе будет пустым.

>Так как Вопрос не имеет никакого отношения к MySQL, должен ли я с ним перейти в форум РНР?
нет...модераторы захотят - перенесут.

   
 
 автор: Phyto   (15.06.2008 в 16:28)   письмо автору
 
   для: Trianon   (15.06.2008 в 15:50)
 

Как же мне удержать значение переменной в сессии при генерации новых страниц?

   
 
 автор: Trianon   (15.06.2008 в 17:16)   письмо автору
 
   для: Phyto   (15.06.2008 в 16:28)
 

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

$theme = $_SESSION['theme']

   
 
 автор: Phyto   (15.06.2008 в 18:44)   письмо автору
 
   для: Trianon   (15.06.2008 в 17:16)
 

Невыразимая благодарность - It`s works!

   
Rambler's Top100
вверх

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