[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск и постраничная навигация mySQL
xew
Здраствуйте сделал поиск на сайте прикрутил постраничную навигацию но возникла проблема при поиске на первой странице все выводится нормально при переходе на следующие выводятся все записи из базы в чем может быть проблема ( ?

Вот код:



[php]$db = mysql_connect ('localhost', 'root');
mysql_select_db ('modulet', $db);

if (isset($_POST['submit_s']))
{
$submit_s = $_POST['submit_s'];
}

if (isset($_POST['search']))
{
$search = $_POST['search'];
}

if (isset($submit_s))
{
if (empty($search))
{
exit ("<div id='p2'>Поисковой запрос не введен.</div>
<form>
<div id='spacebar'><input type='button' value='Попробовать еще раз'
onclick='history.back()'></div><br><br><br><br><br>< ;br><br>
</form>"
);
}
$search = trim($search);
$search = stripslashes($search);
$search = htmlspecialchars($search);
}



$result77 = mysql_query("SELECT str FROM options", $db);
$myrow77 = mysql_fetch_array($result77);
$num = $myrow77["str"];
// Извлекаем из URL текущую страницу
@$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result00 = mysql_query("SELECT COUNT(*) FROM org WHERE title like '%$search%' or name like '%$search%' or number like '%$search%' or adres like '%$search%'");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
// Находим общее число страниц
$total2 = (($posts - 1) / $num) + 1;
$total2 = intval($total2);
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю

if(empty($page) or $page < 0) $page = 1;
if($page > $total2) $page = $total2;
// Вычисляем начиная с какого номера
// следует выводить сообщения

$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start



$result = mysql_query ("SELECT id, name, title, number, adres FROM org WHERE title like '%$search%' or name like '%$search%' or number like '%$search%' or adres like '%$search%' ORDER BY id LIMIT $start, $num", $db);
$myrow = mysql_fetch_array ($result);
if ($result == null){
echo "<div id='p2'>Информация по Вашему запросу не найдена.</div>";
echo "<form>
<div id='spacebar'><input type='button' value='Попробовать еще раз'
onclick='history.back()'></div><br><br><br><br><br>< ;br><br>
</form>"
;
}
do
{
echo "<div id='org_back'><p class='middle'><a href='view_org.php?id=".$myrow['id']."'>".$myrow['name']."</a></p></div>";
}
while ($myrow = mysql_fetch_array ($result));


// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = "<div id='left'></div><div id='center'><p class='middle'><a href=view_search.php?&page=". ($page - 1) .">«</a></p></div><div id='right'></div>";

// Проверяем нужны ли стрелки вперед
if ($page != $total2) $nextpage = "<div id='left'></div><div id='center'><p class='middle'><a href=view_search.php?&page=". ($page + 1) .">»</a></p></div><div id='right'></div>";


<?php
if ($total2 > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo $pervpage;
echo $nextpage;
}




Спустя 3 часа, 20 минут, 8 секунд (5.10.2011 - 13:14) imbalance_hero написал(а):
Ты передаёшь $_POST, которая на вторую страницу не переходит. Данные отправляются лишь на 1 страницу, а не на все подряд. Надо использовать либо $_GET, либо сессию.

Спустя 1 час, 34 минуты (5.10.2011 - 14:48) xew написал(а):
Спасибо выручил всё получилось )))!

Спустя 1 месяц, 28 дней, 6 часов, 44 минуты, 53 секунды (3.12.2011 - 21:33) moricone2 написал(а):
Здравствуйте ! А, как правильно через $_GET передать значение переменной? У меня похожий пример и тоже выводится правильно только первая страница.

Спустя 7 месяцев, 26 дней, 6 часов, 46 минут, 29 секунд (30.07.2012 - 04:20) Адам написал(а):
Кто может помочь сделать через SESSION вывод?

Спустя 8 минут, 18 секунд (30.07.2012 - 04:28) inpost написал(а):
Народ. Ну почему не зарегистрируетесь у нас, не создадите отдельную тему, оформите гуманно, напишете код, объясните его необходимость, чтобы мы сразу знали что и как советовать, чтобы правильно всё решить... ну невозможно же помогать, в теме отвечаем на вопросы ТС всегда...

Спустя 6 минут, 10 секунд (30.07.2012 - 04:34) kamanch написал(а):
inpost
Да нормально, щас ответим.
Цитата
как правильно через $_GET передать значение переменной

$_GET = $a;
$b = $_GET;
echo $b;
// передали значение переменной $a в переменную $b через $_GET


Цитата
Кто может помочь сделать через SESSION вывод?

ваще просто.
echo $_SESSION;

Спустя 50 минут, 37 секунд (30.07.2012 - 05:25) Адам написал(а):
Цитата
echo $_SESSION;

да, так и есть. но не работает)

Спустя 5 минут, 36 секунд (30.07.2012 - 05:30) Адам написал(а):
в этот файл с формы посылается запрос $_POST[nmag] дальше из пост в сессию записываю ...
этот файл выводит на экран записи по запросу, как только я нажимаю переход на другую страницу ( 2 или > ) запрос теряет переменную $_SESSION[nmag].
<font style='width=80%; filter:glow(color=green)'>I need help!)</font>если надо файл который определяет нужду стрелок и переходов могу скинуть...
<?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>

Спустя 6 часов, 30 минут, 38 секунд (30.07.2012 - 12:01) inpost написал(а):
Создай свою тему...
Быстрый ответ:

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