Моля за малко помощ със странициране

samuilh

Registered
Здравейте!
От известно време изпитвам затруднение с една търсачка. Търсачката работи и извежда исканите резултати но само на първа страница. На следваща страница не извежда резултат.
Ще съм благодарен ако можете да помогнете.
Ето го и скрипта.



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<title></title>


</head>
<body>

<div id="main_bg">
<div id="main">






<form action="ss23.php" method="GET">
<select name="grad" >
<option value=0>СОФИЯ</option>
<option value=1>ПЛОВДИВ</option>
<option value=2>ВАРНА</option>
<option value=3>БУРГАС</option>
<option value=4>РУСЕ</option>
<option value=5>СТАРА ЗАГОРА</option>
<option value=6>ВЕЛИКО ТЪРНОВО</option><option value=7>ПЛЕВЕН</option>
<option value=8>ЛОВЕЧ</option><option value=9>БЛАГОЕВГРАД</option>
<option value=10>СЛИВЕН</option><option value=11>АЙТОС</option>
<option value=12>АЛБЕНА</option><option value=13>АЛФАТАР</option>
<option value=14>АНТОНОВО</option><option value=15>АПРИЛЦИ</option>
<option value=16>АРБАНАСИ</option><option value=17>АРДИНО</option>
<option value=18>АСЕНОВГРАД</option><option value=19>АХЕЛОЙ</option>
<option value=20>АХТОПОЛ</option><option value=21>БАЛЧИК</option>
<option value=22>БАНКЯ</option><option value=23>БАНСКО</option>
<option value=24>БАТАК</option><option value=25>БАТАНОВЦИ</option>
<option value=26>БЕЛЕНЕ</option><option value=27>БЕЛИЦА</option>
<option value=28>БЕЛОВО</option><option value=29>БЕЛОГРАДЧИК</option>
<option value=30>БЕЛОСЛАВ</option><option value=31>БЕРКОВИЦА</option>
<option value=32>БОБОВ ДОЛ</option><option value=33>БОБОШЕВО</option>
<option value=34>БОЖУРИЩЕ</option><option value=35>БОЙЧИНОВЦИ</option>
<option value=36>БОЛЯРОВО</option><option value=37>БОРОВЕЦ</option><option value=38>БОРОВО</option><option value=39>БОТЕВГРАД</option><option value=40>БРАЦИГОВО</option><option value=41>БРЕГОВО</option><option value=42>БРЕЗНИК</option><option value=43>БРЕЗОВО</option><option value=44>БРУСАРЦИ</option><option value=45>БУХОВО</option><option value=46>БЪЛГАРОВО</option><option value=47>БЯЛА /варненско/</option><option value=48>БЯЛА /до п.тръмб/</option><option value=49>БЯЛА СЛАТИНА</option><option value=50>БЯЛА ЧЕРКВА</option><option value=51>БЯЛА</option><option value=52>ВАРВАРА</option><option value=53>ВЕЛИКИ ПРЕСЛАВ</option><option value=54>ВЕЛИНГРАД</option><option value=55>ВЕТОВО</option><option value=56>ВИДИН</option><option value=57>ВРАЦА</option><option value=58>ВЪЛЧЕДРЪМ</option><option value=59>ВЪЛЧИДОЛ</option><option value=60>ВЪРБИЦА</option><option value=61>ВЪРШЕЦ</option><option value=62>ГАБРОВО</option><option value=63>ГЕЛА</option><option value=64>ГЕНЕРАЛ ТОШЕВО</option><option value=65>ГЛАВИНИЦА</option><option value=66>ГОВЕДАРЦИ</option><option value=67>ГОДЕЧ</option><option value=68>ГОРНА ОРЯХОВИЦА</option><option value=69>ГОЦЕ ДЕЛЧЕВ</option><option value=70>ГРАМАДА</option><option value=71>ГРАМАТИКОВО</option><option value=72>ГУЛЯНЦИ</option><option value=73>ГУРКОВО</option><option value=74>ГЪЛЪБОВО</option><option value=75>ДВЕ МОГИЛИ</option><option value=76>ДЕБЕЛЕЦ</option><option value=77>ДЕВИН</option><option value=78>ДЕВНЯ</option><option value=79>ДЖЕБЕЛ</option><option value=80>ДИМИТРОВГРАД</option><option value=81>ДИМОВО</option><option value=82>ДОБРИНИЩЕ</option><option value=83>ДОБРИЧ</option><option value=84>ДОЛНА БАНЯ</option><option value=85>ДОЛНА ОРЯХОВИЦА</option><option value=86>ДОЛНА МИТРОПОЛИЯ</option><option value=87>ДОЛНИ ДЪБНИК</option><option value=88>ДОЛНИ ЧИФЛИК</option><option value=89>ДОСПАТ</option><option value=90>ДРЯНОВО</option><option value=91>ДУЛОВО</option><option value=92>ДУПНИЦА</option><option value=93>ДЪЛГОПОЛ</option><option value=94>ДЮНИ</option><option value=95>ЕЛЕНА</option><option value=96>ЕЛЕНИТЕ</option><option value=97>ЕЛИН ПЕЛИН</option><option value=98>ЕЛХОВО</option><option value=99>ЕТРОПОЛЕ</option><option value=100>ЖЕРАВНА</option><option value=101>ЗАВЕТ</option><option value=102>ЗАМФИРОВО</option><option value=103>ЗЕМЕН</option><option value=104>ЗЛАТАРИЦА</option><option value=105>ЗЛАТИЦА</option><option value=106>ЗЛАТНИ ПЯСЪЦИ</option><option value=107>ИВАЙЛОВГРАД</option><option value=108>ИХТИМАН</option><option value=109>ИСКЪР</option><option value=110>ИСПЕРИХ</option><option value=111>КАБЛЕШКОВО</option><option value=112>КАВАРНА</option><option value=113>КАВАЦИТЕ</option><option value=114>КАЗАНЛЪК</option><option value=115>КАЛОФЕР</option><option value=116>КАМЕНО</option><option value=117>КАОЛИНОВО</option><option value=118>КАРЛОВО</option><option value=119>КАРНОБАТ</option><option value=120>КАСПИЧАН</option><option value=121>КЕРМЕН</option><option value=122>КИЛИФАРЕВО</option><option value=123>КИТЕН</option><option value=124>КЛИСУРА</option><option value=125>КНЕЖА</option><option value=126>КОЗЛОДУЙ</option><option value=127>КОЙНАРЕ </option><option value=128>КОПРИВЩИЦА</option><option value=129>КОСТЕНЕЦ</option><option value=130>КОСТИНБРОД</option><option value=131>КОТЕЛ</option><option value=132>КОЧЕРИНОВО</option><option value=133>КРАНЕВО</option><option value=134>КРЕСНА</option><option value=135>КРИВОДОЛ</option><option value=136>КРИЧИМ</option><option value=137>КРУМОВГРАД</option><option value=138>КУБРАТ</option><option value=139>КУЛА</option><option value=140>КЪРДЖАЛИ</option><option value=141>КЮСТЕНДИЛ</option><option value=142>ЛЕВСКИ</option><option value=143>ЛЕТНИЦА</option><option value=144>ЛОЗЕНЕЦ</option><option value=145>ЛОЗНИЦА</option><option value=146>ЛОМ</option><option value=147>ЛУКОВИТ</option><option value=148>ЛЪКИ</option><option value=149>ЛЮБИМЕЦ</option><option value=150>ЛЯСКОВЕЦ</option><option value=151>МАДАН</option><option value=152>МАДЖАРОВО</option><option value=153>МАЛКО ТЪРНОВО</option><option value=154>МЕЗДРА</option><option value=155>МЕЛНИК</option><option value=156>МЕРИЧЛЕРИ</option><option value=157>МИЗИЯ</option><option value=158>МАДАН</option><option value=159>МОМЧИЛГРАД</option><option value=160>МОНТАНА</option><option value=161>МЪГЛИЖ</option><option value=162>НЕДЕЛИНО</option><option value=163>НЕСЕБЪР</option><option value=164>НИКОЛАЕВО</option><option value=165>НИКОПОЛ</option><option value=166>НОВА ЗАГОРА</option><option value=167>НОВИ ИСКЪР</option><option value=168>НОВИ ПАЗАР</option><option value=169>НОВИ ХАН</option><option value=170>ОБЗОР</option><option value=171>ОМУРТАГ</option><option value=172>ОПАКА</option><option value=173>ОРЯХОВО</option><option value=174>ПАВЕЛ БАНЯ</option><option value=175>ПАВЛИКЕНИ</option><option value=176>ПАЗАРДЖИК</option><option value=177>ПАМПОРОВО</option><option value=178>ПАНАГЮРИЩЕ</option><option value=179>ПЕРНИК</option><option value=180>ПЕРУЩИЦА</option><option value=181>ПЕТРИЧ</option><option value=182>ПЕЩЕРА</option><option value=183>ПИРДОП</option><option value=184>ПЛАЧКОВЦИ</option><option value=185>ПЛИСКА</option><option value=186>ПОЛСКИ ТРЪМБЕШ</option><option value=187>ПОМОРИЕ</option><option value=188>ПОПОВО</option><option value=189>ПОРДИМ</option><option value=190>ПРАВЕЦ</option><option value=191>ПРИМОРСКО</option><option value=192>ПРОВАДИЯ</option><option value=193>ПЪРВОМАЙ</option><option value=194>РАВДА</option><option value=195>РАДНЕВО</option><option value=196>РАДОМИР</option><option value=197>РАЗГРАД</option><option value=198>РАЗЛОГ</option><option value=199>РАКИТОВО</option><option value=200>РАКОВСКИ</option><option value=201>РЕЗОВО</option><option value=202>РИЛА</option><option value=203>РОМАН</option><option value=204>РУДОЗЕМ</option><option value=205>РУСАЛКА</option><option value=206>САДОВО</option><option value=207>САМОКОВ</option><option value=208>САНДАНСКИ</option><option value=209>САПАРЕВА БАНЯ</option><option value=210>СВ.СВ. КОНСТАНТИН И ЕЛЕНА</option><option value=211>СВЕТИ ВЛАС</option><option value=212>СВИЛЕНГРАД</option><option value=213>СВИЩОВ</option><option value=214>СВОГЕ</option><option value=215>СЕВЛИЕВО</option><option value=216>СЕНОВО</option><option value=217>СЕПТЕМВРИ</option><option value=218>СИЛИСТРА</option><option value=219>СИМЕОНОВГРАД</option><option value=220>СИМИТЛИ</option><option value=221>СИНЕМОРЕЦ</option><option value=222>СЛАВЯНОВО</option><option value=223>СЛИВНИЦА</option><option value=224>СЛЪНЧЕВ БРЯГ</option><option value=225>СМОЛЯН</option><option value=226>СМЯДОВО</option><option value=227>СОЗОПОЛ</option><option value=228>СОПОТ</option><option value=229>СРЕДЕЦ</option><option value=230>СТАМБОЛИЙСКИ</option><option value=231>СТАРО ОРЯХОВО</option><option value=232>СТОЙКИТЕ</option><option value=233>СТРАЖИЦА</option><option value=234>СТРАЛДЖА</option><option value=235>СТРЕЛЧА</option><option value=236>СУВОРОВО</option><option value=237>СУНГУРЛАРЕ</option><option value=238>СУХИНДОЛ</option><option value=239>СЪЕДИНЕНИЕ</option><option value=240>ТВЪРДИЦА</option><option value=241>ТЕРВЕЛ</option><option value=242>ТЕТЕВЕН</option><option value=243>ТОДОР</option><option value=244>ТОПОЛОВГРАД</option><option value=245>ТРОЯН</option><option value=246>ТРЪН</option><option value=247>ТРЪСТЕНИК</option><option value=248>ТРЯВНА</option><option value=249>ТУТРАКАН</option><option value=250>ТЪРГОВИЩЕ</option><option value=251>УГЪРЧИН</option><option value=252>ХАДЖИДИМОВО</option><option value=253>ХАРМАНЛИ</option><option value=254>ХАСКОВО</option><option value=255>ХИСАРЯ</option><option value=256>ЦАР КАЛОЯН</option><option value=257>ЦАРЕВО</option><option value=258>ЧАЙКА</option><option value=259>ЧЕПЕЛАРЕ</option><option value=260>ЧЕРВЕН БРЯГ</option><option value=261>ЧЕРНОМОРЕЦ</option><option value=262>ЧИПРОВЦИ</option><option value=263>ЧИРПАН</option><option value=264>ШАБЛА</option><option value=265>ШИВАЧЕВО</option><option value=266>ШИПКА</option><option value=267>ШИРОКА ЛЪКА</option><option value=268>ШУМЕН</option><option value=269>ЯБЛАНИЦА</option><option value=270>ЯКОРУДА</option><option value=271>ЯМБОЛ</option><option value=272>ВИТОША</option><option value=273>КАМЧИЯ</option></select></td>
</tr>

<br>

<form method="GET">
<select name="category">
<option value="0">Всички</option>
<option value="5" >*****</option>
<option value="4" >****</option>
<option value="3" >***</option>
<option value="2" >**</option>
<option value="1" >*</option>

</select>
<br>




<input type='submit' value='Търси'>


</form>


<?php
error_reporting (E_ALL ^ E_NOTICE);

$dbHost = 'localhost'; // localhost will be used in most cases
// set these to your mysql database username and password.
$dbUser = 'root';
$dbPass = '';
$dbDatabase = 'htpr'; // the database you put the table into.
$con = mysql_connect($dbHost, $dbUser, $dbPass) or trigger_error("Failed to connect to MySQL Server. Error: " . mysql_error());
mysql_select_db('htp');



$where[0] = (int)$_GET['grad'];
$where[1] = (int)$_GET['category'];
if($where[0]!=0 and $where[1]!=0)
$sql="SELECT COUNT(*) FROM ht WHERE `nmqsto`= '".$where[0]."' AND `cat`= '".$where[1]."' ORDER BY id DESC";


elseif($where[0] !=0) {
$sql = ("SELECT COUNT(*) FROM ht WHERE `nmqsto`= '".$where[0]."' ORDER BY id DESC");


$result = mysql_query($sql) or die('Error, query failed');

$r = mysql_fetch_row($result);
$numrows = $r[0];


$rowsperpage = 3;

$totalpages = ceil($numrows / $rowsperpage);


if (isset($_GET['currentpage'])) {
if(isset($_GET['currentpage']) && is_numeric($_GET['currentpage'])) {

$currentpage = (int)$_GET['currentpage'];
}
} else {

$currentpage = 1;
}


if (@$currentpage > $totalpages) {

$currentpage = $totalpages;
}

if (@$currentpage < 1) {

$currentpage = 1;
}


$offset = ($currentpage - 1) * $rowsperpage;




$roww=mysql_query("SELECT * FROM ht WHERE `nmqsto`= '".$where[0]."' ORDER BY id DESC LIMIT $offset, $rowsperpage");

while($row=mysql_fetch_assoc($roww)) {
echo $row['ime'];

}




$range = 3;


if ($currentpage > 1) {

echo " <a href='ss23.php?currentpage=1'><<</a> ";

$prevpage = $currentpage - 1;

echo " <a href='ss23.php?currentpage=$prevpage'><</a> ";
}


for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) {

if (($x > 0) && ($x <= $totalpages)) {

if ($x == $currentpage) {

echo " [<b>$x</b>] ";

} else {

echo " <a href='ss23.php?currentpage=$x'>$x</a> ";
}
}
}


if ($currentpage != $totalpages) {

$nextpage = $currentpage + 1;

echo " <a href='ss23.php?currentpage=$nextpage'>></a> ";

echo " <a href='ss23.php?currentpage=$totalpages'>>></a> ";
}}
?>
</body>
</html>
 
Моето предположение е такова не огледах кода много защото нямам време но ако $rowsperpage ти е статична то как да ти изведе от sql например 50, 10 А?
$onset = $rowsperpage * $page;
я замени в заявката към mysql LIMIT $offset, $onset

нещо от сорта или поне така си мисля :roll:
 
Благодаря че се отзова, но не се получава както казваш даже ни изкарва никакви резултати така.
Пробвал съм всякакви страницирания и не мога да докарам всичко докрай.
Проблема е в заявката и по - точно WHERE `nmqsto`= '".$where[0]."' защото извиква променливата от опцията за градовете. Ако заявката е по проста примерно( "SELECT * FROM ht ORDER BY id DESC LIMIT $offset, $rowsperpage"); няма проблеми със смяната на страниците- изкарва си правилните резултати. Но при моят случай след като натиснеш за втора или друга страница се губи заявката която си избрал. Примерно ако си избрал Варна тя отговаря на Value 2 и извежда резултатите а след смяна на страницата самото Value се губи в заявката.

Дано сте ме разбрали какво искам да обясня. :)
 
Забележи:

PHP:
$where[0] = (int)$_GET['grad']; 
$where[1] = (int)$_GET['category']; 
if($where[0]!=0 and $where[1]!=0) 
$sql="SELECT COUNT(*) FROM ht WHERE `nmqsto`= '".$where[0]."' AND `cat`= '".$where[1]."' ORDER BY id DESC";

Във заявката имаш един AND, който ти отговаря на категорията, сложи го и на другите заявки и ще ти ги вади нещатата.

Ако помислиш, тази заявка ти брой според nmqsto и cat, на базата на това ти съставя линковете, който трябва да ти се покажат. А при другите заявките ти не ползаваш AND cat, заявката в този случай не знае, че трябва да ползва и cat полето, за да може конкретната информация от базата данни да се вземе, според това на коя страница си.

EDIT:

А да, остава въпроса как да прехвърляме cat и grad?

Ами ето тук примерно:

PHP:
echo " <a href='ss23.php?currentpage=$nextpage'>></a> ";

Го правиш:

PHP:
echo " <a href='ss23.php?currentpage=".$nextpage."&grad=".$where[0]."&category=".$where[1]."'>></a> ";

Така ще прехвърляш през $_GET стойностите, който ти трябват за да може да се изпълни правилно заявката.
 
eddyy93 Пак не се получават резултатите по-големи от 1-ва страница. Тази заявка
$sql="SELECT COUNT(*) FROM ht WHERE `nmqsto`= '".$where[0]."' AND `cat`= '".$where[1]."' ORDER BY id DESC";
е за двете опции ако са избрани. Другата заявка е ако потребителя избере само да търси по grad. Просто не съм дал всички възможни опции. За сега целта ми е да изкарвам резултати и на другите страници.
Може ли някой да ми подскаже как да запазя стойностите в сесии?
Самото странициране работи коректно на по прости заявки(примерно -where nmqsto=2).
Благодаря Ви предварително за указаната помощ.
 

Back
Горе