|
|
|
| Здравствуйте!
Подскажите, пожалуйста, решение.
Когда я вывожу результаты поиска постранично, то получилось так, что сначала отображается все правильно, но после того когда я нажимаю на следующую страницу, т.е. происходит get-запрос (?page=...), то результаты не выводятся вообще, получается так, что как-будто запрос не содержал символов или вовсе потерян.
(Вот, что получается: в результате поиска было найдено, например 3 записи. 2 записи отображаются на 1-ой странице, а 3-я запись на 2-ой странице. При переходе на 2-ю страницу, почему -то теряется эта запись т.е 3-я).
Буду очень признателен, если Вы поможете мне разобраться в этом вопросе.
Вот форма поиска:
<FORM method = "post" action = "newpoisk.php">
<strong><font color = "red">Введите поисковый запрос:</font></strong> <br>
<input type = "text" name = "searchterm" size = "60" maxlength = "100">
<input type = "submit" name = "find" class = "submit" value = "Поиск">
|
Код обработчика:
<?php
session_start();
$searchterm = $_POST['searchterm'];
$_SESSION['searchterm'] = $searchterm;
if (!($conn_id = @mysql_connect("localhost", "root", "webwizard")))
die ("Cannot connect to server<br>");
if (!@mysql_select_db("search", $conn_id))
die ("Cannot select database<br>");
$per_page=2; // Количество сообщений на одной странице
if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;
$start=abs($page*$per_page);
$query = "select * from find where textname=$searchterm LIMIT $start, $per_page";
$result=mysql_query($query);
echo '<table border="0" cellpadding="0" cellspacing="0" width="95%">';
while($row=mysql_fetch_array($result))
{
$url = $row['linkname'];
$poisk = $row['textname'];
echo "
<TR>
<TD><a href = 'http://$url' class = 'load'>$poisk</a></TD>
</TR>";
}
echo '</table>';
$query = "SELECT count(*) FROM find where textname=$searchterm";
$result=mysql_query($query);
$row=mysql_fetch_row($result);
$total_rows=$row[0];
$num_pages=ceil($total_rows/$per_page);
// Постраничный вывод
for($i=1;$i<=$num_pages;$i++)
{
if ($i-1 == $page)
{
echo $i." ";
}
else
{
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a> ";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: webzorb
(22.11.2006 в 10:01)
| | При повторном запросе теряется искомая строка.
Уж коль Вы используете сессию для её хранения, пользуйтесь ей.
Попробуйте изменить начало скрипта так:
<?php
session_start();
if(isset($_POST['searchterm']))
$_SESSION['searchterm'] = $_POST['searchterm'];
$searchterm = $_SESSION['searchterm'];
|
| |
|
|
|
|
|
|
|
для: Trianon
(22.11.2006 в 10:25)
| | Спасибо, Trianon, БОЛЬШОЕ.
ВСЁ ПОЛУЧИЛОСЬ.
(Уж коль Вы используете сессию для её хранения... )
1)Хотел спросить, Trianon, а как можно это реализовать без применения сессий.
2) Можно ли организовать такой поиск используя текстовый файл вместо базы данных! | |
|
|
|
|
|
|
|
для: webzorb
(22.11.2006 в 16:22)
| | передавать строку поиска в URL, вместе с номером страницы. | |
|
|
|
|
|
|
|
для: webzorb
(22.11.2006 в 16:22)
| | 1. обычно делают так, как написала elenaki
2. Можно. Но делать сложнее, нагрузка на сервер возрастет, а гибкость реализации уменьшится. | |
|
|
|
|
|
|
|
для: Trianon
(22.11.2006 в 20:18)
| | Спасибо за ответ!
Я пробовал передавать строку поиска вместе с URL, но запрос терялся при переходе на 2-ю страницу. Как это организовать чтобы запрос не терялся я не знаю. Подскажите, пожалуйста. | |
|
|
|
|
|
|
|
для: webzorb
(23.11.2006 в 05:25)
| |
<?
// Постраничный вывод
for($i=1;$i<=$num_pages;$i++)
....
else
{
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'&searchterm='.$searchterm">'.$i."</a> ";
}
}
|
| |
|
|
|
|
|
|
|
для: Yakor
(24.11.2006 в 08:04)
| | только тогда придется еще... добавить..
<?
if(!isset($_POST['searchterm']))
{
if(isset($_GET['searchterm']))
{
$searchterm = $_GET['searchterm'];
}
else {
//.............................
}
}
else {
$searchterm = $_POST['searchterm'];
}
?>
|
| |
|
|
|
|
|
|
|
для: Yakor
(24.11.2006 в 08:08)
| | Спасибо большое, Yakor | |
|
|
|
|
|
|
|
для: webzorb
(24.11.2006 в 08:22)
| | всегда пожалуйста :) | |
|
|
|