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

Форум MySQL

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

 

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

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

тема: постраничный вывод результатов поиска
 
 автор: webzorb   (22.11.2006 в 10:01)   письмо автору
 
 

Здравствуйте!
Подскажите, пожалуйста, решение.
Когда я вывожу результаты поиска постранично, то получилось так, что сначала отображается все правильно, но после того когда я нажимаю на следующую страницу, т.е. происходит 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-== $page)
            {
            echo 
$i." ";
            }
        else
            {
            echo 
'<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a> ";
            }
        }
?>

   
 
 автор: Trianon   (22.11.2006 в 10:25)   письмо автору
 
   для: webzorb   (22.11.2006 в 10:01)
 

При повторном запросе теряется искомая строка.
Уж коль Вы используете сессию для её хранения, пользуйтесь ей.
Попробуйте изменить начало скрипта так:

<?php 
  session_start
(); 
  if(isset(
$_POST['searchterm'])) 
      
$_SESSION['searchterm'] = $_POST['searchterm']; 
  
$searchterm $_SESSION['searchterm'];

   
 
 автор: webzorb   (22.11.2006 в 16:22)   письмо автору
 
   для: Trianon   (22.11.2006 в 10:25)
 

Спасибо, Trianon, БОЛЬШОЕ.
ВСЁ ПОЛУЧИЛОСЬ.

(Уж коль Вы используете сессию для её хранения... )
1)Хотел спросить, Trianon, а как можно это реализовать без применения сессий.
2) Можно ли организовать такой поиск используя текстовый файл вместо базы данных!

   
 
 автор: elenaki   (22.11.2006 в 17:14)   письмо автору
 
   для: webzorb   (22.11.2006 в 16:22)
 

передавать строку поиска в URL, вместе с номером страницы.

   
 
 автор: Trianon   (22.11.2006 в 20:18)   письмо автору
 
   для: webzorb   (22.11.2006 в 16:22)
 

1. обычно делают так, как написала elenaki
2. Можно. Но делать сложнее, нагрузка на сервер возрастет, а гибкость реализации уменьшится.

   
 
 автор: webzorb   (23.11.2006 в 05:25)   письмо автору
 
   для: Trianon   (22.11.2006 в 20:18)
 

Спасибо за ответ!
Я пробовал передавать строку поиска вместе с URL, но запрос терялся при переходе на 2-ю страницу. Как это организовать чтобы запрос не терялся я не знаю. Подскажите, пожалуйста.

   
 
 автор: Yakor   (24.11.2006 в 08:04)   письмо автору
 
   для: 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:08)   письмо автору
 
   для: Yakor   (24.11.2006 в 08:04)
 

только тогда придется еще... добавить..
<?
if(!isset($_POST['searchterm']))
{
         if(isset(
$_GET['searchterm']))
         {
                
$searchterm $_GET['searchterm']; 
         }
         else {
                
//............................. 
         
}
}
else {
         
$searchterm $_POST['searchterm']; 
}
?>

   
 
 автор: webzorb   (24.11.2006 в 08:22)   письмо автору
 
   для: Yakor   (24.11.2006 в 08:08)
 

Спасибо большое, Yakor

   
 
 автор: Yakor   (24.11.2006 в 08:52)   письмо автору
 
   для: webzorb   (24.11.2006 в 08:22)
 

всегда пожалуйста :)

   
Rambler's Top100
вверх

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