Гриша К.
Новичок
Вывод результатов поиска из БД постранично?
Здравствуйте.
Подскажите пожалуйста решение.
- Есть фукция (display_category()), которая выводит данные из БД по странично, по пять записей на странице все работает хорошо.
- Есть функция вывода результаотв поиска (display_search()), функция выводит все запписи на одну страницу.
Когда я попробовал вывести результаты поиска постранично, то получилось так, что сначала отображается все правильно, но после того когда я нажимаю на следующую страницу, т.е. происходит get-запрос (?page=...), то результаты не выводятся вообще, получается так, что кагбудто запрос не содержал символов.
Функция вывода результатов поиска
ВОТ КОД ГДЕ Я ПОПРОБОВАЛ ВЫВЕСТИ РЕЗУЛЬТАТЫ ПОСИКА ПОСТРАНИЧНО
Здравствуйте.
Подскажите пожалуйста решение.
- Есть фукция (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>';
?>