Вывод результатов поиска из БД постранично?

Статус
В этой теме нельзя размещать новые ответы.

Гриша К.

Новичок
Вывод результатов поиска из БД постранично?

Здравствуйте.
Подскажите пожалуйста решение.
- Есть фукция (display_category()), которая выводит данные из БД по странично, по пять записей на странице все работает хорошо.

- Есть функция вывода результаотв поиска (display_search()), функция выводит все запписи на одну страницу.
Когда я попробовал вывести результаты поиска постранично, то получилось так, что сначала отображается все правильно, но после того когда я нажимаю на следующую страницу, т.е. происходит get-запрос (?page=...), то результаты не выводятся вообще, получается так, что кагбудто запрос не содержал символов.

PHP:
function display_category($categoryid)
{
$conn = db_connect();

$per_page=5;

if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;

$start=abs($page*$per_page);

$query="SELECT * FROM `catalogue` where categoryid like '".$categoryid."%' and control = 'Yes' ORDER BY siteid DESC LIMIT $start, $per_page";
$result=mysql_query($query);

echo '<table border="0" cellpadding="0" cellspacing="0" width="95%">';
	while($row=mysql_fetch_array($result)) 
	{	
  echo '<tr>';
  echo '<td width="5%" valign="top">';
  echo '<p class="text" id="right" style="margin-left:0pt;">'.++$start.'.</p>';  
  echo '</td><td width="90%">';
  echo '<p class="text"><a href="'.$row['url'].'" target="_blank">'.$row['title'].'</a><br>'.$row['description'].'</p><p class="text" id="url">'.$row['url'].' - '.$row['date'].'</p>';
  echo "</td></tr>\n";
	}
echo '</table>';

$query="SELECT count(*) FROM `catalogue` where categoryid like '".$categoryid."%' and control = 'Yes'";
$result=mysql_query($query);
$row=mysql_fetch_row($result);
$total_rows=$row[0];
$num_pages=ceil($total_rows/$per_page);

echo '<table border="0" cellpadding="0" cellspacing="0" width="88%">
      <tr>
      <td width="88%" valign="top"><p class="text"><b>';

	for($i=1;$i<=$num_pages;$i++) 
		{
		if ($i-1 == $page) 
			{
			echo $i." ";
			} 
		else 
			{
			echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a> ";			
			}  
		}		

echo '</b></p></td></tr></table>';
}

Функция вывода результатов поиска
PHP:
function display_search()
{
  @ $searchterm=$HTTP_POST_VARS['searchterm'];

  $searchterm= trim($searchterm);

  if (!$searchterm)
  {
     echo 'You have not entered search details.  Please go back and try again.';
     exit;
  }
    
  $searchterm = addslashes($searchterm);

  @ $db = mysql_pconnect('localhost', 'pozvono9_', '');

  if (!$db)
  {
     echo 'Error: Could not connect to database.  Please try again later.';
     exit;
  }

  mysql_select_db('pozvono9_link');
  $query = "select * from catalogue where title like '%".$searchterm."%' or description like '%".$searchterm."%' or url like '%".$searchterm."%'";

  $result = mysql_query($query);

  $num_results = mysql_num_rows($result);
  echo mysql_errno() . ": " . mysql_error(). "\n";

  echo '<p>Number: '.$num_results.'</p>';

  for ($i=0; $i <$num_results; $i++)
  {
     $row = mysql_fetch_array($result);
     echo '<p><strong>'.($i+1).'. Title: ';
     echo htmlspecialchars(stripslashes($row['title']));
     echo '</strong><br />Description: ';
     echo stripslashes($row['description']);
     echo '<br />URL: ';
     echo stripslashes($row['url']);
     echo '</p>';
  }
}

ВОТ КОД ГДЕ Я ПОПРОБОВАЛ ВЫВЕСТИ РЕЗУЛЬТАТЫ ПОСИКА ПОСТРАНИЧНО
PHP:
 <?php
  // create short variable names  
  @ $searchterm=$_POST['searchterm'];
  @ $_SESSION['searchterm']=$searchterm;

  $searchterm= trim($searchterm);

  if (!$searchterm)
  {
     echo 'You have not entered search details.  Please go back and try again.';
     exit;
  } 
 
  $searchterm = addslashes($searchterm);

  @ $db = mysql_pconnect('localhost', 'pozvono9_', '');

  if (!$db)
  {
     echo 'Error: Could not connect to database.  Please try again later.';
     exit;
  }

  
$per_page=5;

if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;

$start=abs($page*$per_page);

$query = "select * from catalogue where title like '%".$searchterm."%' or description like '%".$searchterm."%' or url like '%".$searchterm."%' ORDER BY siteid DESC LIMIT $start, $per_page";

$result=mysql_query($query);


echo '<table border="0" cellpadding="0" cellspacing="0" width="95%">';
	while($row=mysql_fetch_array($result)) 
	{	
  echo '<tr>';
  echo '<td width="5%" valign="top">';
  echo '<p class="text" id="right" style="margin-left:0pt;">'.++$start.'.</p>';  
  echo '</td><td width="90%">';
  echo '<p class="text"><a href="'.$row['url'].'" target="_blank">'.$row['title'].'</a><br>'.$row['description'].'</p><p class="text" id="url">'.$row['url'].' - '.$row['date'].'</p>';
  echo "</td></tr>\n";
	}
echo '</table>';


$query = "SELECT count(*) FROM catalogue where title like '%".$searchterm."%' or description like '%".$searchterm."%' or url like '%".$searchterm."%'";
$result=mysql_query($query);
$row=mysql_fetch_row($result);
$total_rows=$row[0];
$num_pages=ceil($total_rows/$per_page);

echo '<table border="0" cellpadding="0" cellspacing="0" width="88%">
      <tr>
      <td width="88%" valign="top"><p class="text"><b>';

	for($i=1;$i<=$num_pages;$i++) 
		{
		if ($i-1 == $page) 
			{
			echo $i." ";
			} 
		else 
			{
			echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a> ";			
			}  
		}		

echo '</b></p></td></tr></table>';

?>
 

Фанат

oncle terrible
Команда форума
Тема закрыта.

Формулируйте вопрос так, чтобы его могли понять не только Вы.
Не пишите больше 10-15 строк кода.
Никто не будет вникать в Ваш код длиной 100 строк.
Правила форума: http://phpclub.ru/talk/announcement.php?s=&forumid=12
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху