webForumDet fria alternativet

Access databas, TOP - paging

3 svar · 369 visningar · startad av UrMe

UrMeMedlem sedan apr. 2001762 inlägg
#1

Har slitit mitt hår ett tag nu.. vill göra ett enkelt paging script med en <<Prev|Next>> knapp. Den ska visa 9 per sida och helst visa hur många sida och vilken sida man är på.

t.ex

7/49
<<Prev|Next>>

Detta hade ju inte varit några problem om man kört MySQL, men nu används Access.

Så här långt har jag kommit:

$filmer =  "select TOP 9 * from tblTitles ORDER BY intID DESC";

:)

Men eftersom det inte finns någon limit funktion i Access har jag kört fast totalt.

UrMeMedlem sedan apr. 2001762 inlägg
#2

Delar med mig av lite mer kod:

Jag hämtar alla träffar och lägger dem i en array:

$rowfilmer = $DB->getArray($filmer);

Sedan loopar jag bara ut arrayen med en foreach-sats

foreach ($rowfilmer as $key => $value) {
	echo $rowfilmer[$key]["nvcLocalTitle"]."<br />";
}

Kan man göra någonting i loopen? Fast är ju inte så kul om man måste hämta in alla filmer varje gång och sedan bara visa 9 av dem åt gången.

UrMeMedlem sedan apr. 2001762 inlägg
#3

okej jag har löst det iallafall.

Loopar igenom hela databasen och bygger upp en ny array som håller reda på idnumren.

$movieindex = "select * from tblTitles ORDER BY intID DESC";
$rowmovieindex = $DB->getArray($movieindex);
$pagearray = array();
$pagenr = 1;
$movies_per_page = 9;
$movie_counter = 1;
$x = count($rowmovieindex) - 1;
$lastid = $rowmovieindex[$x]["intID"];

foreach ($rowmovieindex as $key => $value) {

	if($movie_counter == 1)
	{
		$pagearray[$pagenr]["firstmovie"] = $rowmovieindex[$key]["intID"];
	}
	
	if($movie_counter == $movies_per_page OR $rowmovieindex[$key]["intID"] == $lastid)
	{
		$pagearray[$pagenr]["lastmovie"] = $rowmovieindex[$key]["intID"];
		$pagenr++;
		$movie_counter = 1;
	}
	else
	{
		$movie_counter++;
	}
}

if(!IsSet($_GET["page"]))
{
	$cur_page = 1;
}
else
{
	$cur_page = $_GET["page"];
}

$countpages = count($pagearray);

if($cur_page >= $countpages)
{
	$nextpage = $countpages;
}
else
{
	$nextpage = $cur_page + 1;
}

if($cur_page <= 1)
{
	$prevpage = 1;
}
else
{
	$prevpage = $cur_page - 1;
}

$filmer =  "select TOP 9 * from tblTitles WHERE intID between ".$pagearray[$cur_page]["firstmovie"]." and ".$pagearray[$cur_page]["lastmovie"]." ORDER BY intID DESC";
UrMeMedlem sedan apr. 2001762 inlägg
#4

Ett problem med detta är ju att det bara går att sortera på IDnr.. om jag sorterar t.ex på Namn så blir ju allt fel.

Det måste ju finnas något enklare sätt för att få paging med php+access?

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)