[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск по БД + постраничная навигацыя
user
Привет всем!
Необходимо собрать воидино 2 скрипта. У самого неполучилось - поиск работал но постраничная навигация нэт. Подозреваю что сначало надо как то посчитать количество найденых строк а потом уже выводить постраничную навигацию.


Форма поиска:
HTML
<form name="form" action="search.php" method="get">
<input type="text" name="q" />
<input type="submit" name="Submit" value="Search" />
</form>


Скрипт поиска:
PHP
// получаем поисковый запрос
<? $var = @$_GET['q'] ;
  
$trimmed trim($var); //trim whitespace from the stored variable

include ("bloks/bd.php");

// из постранбчной навигации
$str=($pagenr-1)*$perPage

$query "SELECT * FROM table WHERE name1 LIKE '%" $trimmed "%' OR name2 
LIMIT $str, $perPage"
;

$numresult=mysql_query($query);

$numrow=mysql_fetch_array($numresult) or die(mysql_error());

$result mysql_query($query) or die("Couldn't execute query");
// дальше выводим резуьтаты в Браузер 




Скрипт постраничной навигации:
PHP
// Set $pagenr variable  Get page number, if any
if(isset($_GET['pagenr']))
{
    if(!
is_numeric($_GET['pagenr']))
    {
        echo 
'Error.';
        exit();
    }
    
$pagenr $_GET['pagenr'];
}
else
{
    
$pagenr=1;
}
// Calculate how many rows or records in total the query will output
$queryCount 'SELECT count(*) FROM table';
$resultCount mysql_query($queryCount);
$fetch_row mysql_fetch_row($resultCount);
$numrows $fetch_row[0];

// if there is no results
if($numrows == 0)
{
    echo 
'no results';
    exit();
}

// Calculate number of pages
$perPage 5;
//$perPage = $select;
$lastpage ceil($numrows/$perPage);
$pagenr = (int)$pagenr;
if(
$pagenr<1)
{
    
$pagenr=1;
}
else if(
$pagenr>$lastpage)
{
    
$pagenr=$lastpage;
}

//Generate page links
if($pagenr==1)
{
    
$pages 'first | last';
}
else
{
    
$pages "<a href='{$_SERVER['PHP_SELF']}?pagenr=1'>first</a> | ";
    
$prevpage=$pagenr-1;
    
$pages .= " <a href='{$_SERVER['PHP_SELF']}?pagenr=$prevpage'>prev</a> ";
}
$pages .= ' ( page'.$pagenr.' of '.$lastpage.' ) ';
if(
$pagenr==$lastpage)
{
    
$pages .= ' next | last ';
}
else
{
    
$nextpage $pagenr+1;
    
$pages .= " <a href='".$_SERVER['PHP_SELF']."?pagenr=$nextpage'>next</a> | ";
    
$pages .= " <a href='".$_SERVER['PHP_SELF']."?pagenr=$lastpage'>last</a>";
}

// Echo pages

echo '<br><div style="width:100%; text-align: center; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color:#999;">'.$pages.'</div>' 




Спустя 5 часов, 13 минут, 16 секунд (29.08.2009 - 00:14) Anton63 написал(а):
Цитата

Подозреваю что сначало надо как то посчитать количество найденых строк а потом уже выводить постраничную навигацию.

Логично...
Цитата

$query = "SELECT * FROM table WHERE name1 LIKE '%" . $trimmed . "%' OR name2 
LIMIT $str, $perPage";

Здесь LIMIT зря поставил... помоему его там не должно быть...
А ваще со скриптом поиска я и сам не справился... так, что не слушай меня... я ничему хорошему не научу...


_____________
____
Извините за глупые вопросы но я только учусь ;) ;)
Быстрый ответ:

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