Lidt problemer med pagination

Tags:    php

Hej.

Jeg er ved at skabe en next / previous funktion.

Den virker skam også fint nok, men når jeg så vil lave nogle [1] [2] [3] hvor [2] er den aktive side, så kan jeg ikke helt få det til at virke.

Den viser nemlig [2] som link og [2] uden et link.

I kan se hvad jeg mener her:
http://dumpen.dk/archives (Jeg ved ikke hvorfor den skriver 0 :x)
http://dumpen.dk/archives/3 (Her er et mere konkret eksempel)

Her er den kode jeg bruger:
Fold kodeboks ind/udKode 


Jeg håber dette er nok information, ellers må i bare sige til.

På forhånd tak



Indlæg senest redigeret d. 01.06.2007 12:52 af Bruger #11386
10 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Fold kodeboks ind/udKode 


Det er så'n den gerne skulle fungere. :) Har bare rettet lidt til, efter det du har beskrevet.



Indlæg senest redigeret d. 02.06.2007 23:29 af Bruger #10216
Dette skulle meget gerne virke:
Fold kodeboks ind/udKode 




Jeg får bare:

Warning: implode() [function.implode]: Bad arguments. in /var/www/dumpen.dk/public_html/content/archives.php on line 64

Hvor linje 64 er echo implode(' ',$links); :P



På linjen:
Fold kodeboks ind/udKode 


Skal der stå:
Fold kodeboks ind/udKode 


Såvidt jeg lige kan se



Ja det hjalp.

Men hvis i trykker på de to links i første tråd, så er det gået lidt galt for min next og previous funktion.

Da de tæller 3-6-9-12-15-18-21 og min nummer [1] ting tæller 1-2-3-4-5-6-7-8-9 så passer de ikke helt sammen.

Jeg bruger lige pt dette script, men virker ikke som jeg vil have det :o

/* If previous number is higher then 0 */
if ($prev_num > 0) {
/* Creating a previous link */
echo "<a href=\\"/archives/". ($_GET["underside"]-$per_page) ."\\"><< Previous</a>";
}

echo " ";

// Settings
// int: Number of items on page
$pageLength = $per_page;


// Capture items in database
$sql2 = mysql_query("SELECT COUNT(id) AS total FROM $news_tabel");
$rows2 = mysql_result($sql2,0);

$currentPage = (int)$_GET['underside'];
$numberOfPages = ceil($rows2/$pageLength);

// Generating links
$links = array();
for ($i=0;$i<$numberOfPages;$i++) {
// if current page == counter, add [].
$links[] = $currentPage == $i ? '<a href="/archives/'.$i.'">['.$i.']</a>' : '<a href="/archives/'.$i.'">'.$i.'</a>';
}
echo implode(' ',$links);

echo " ";

/* If next number is higher then 0 */
if ($next_num > 0) {
echo "<a href=\\"/archives/". ($_GET["underside"]+$per_page) ."\\">Next >></a>";
}



Så vidt jeg kan se skal du vel også bare sige +- 1 og ikke +- $per_page?

Derudover skal du tjekker om $next_num er mindre end $numberOfPages - der hvor det link indsættes. Ellers vil den altid være der, så vidt jeg kan se :)



Indlæg senest redigeret d. 02.06.2007 01:36 af Bruger #4575
Nej så vælger den nemlig ikke indlæggene/blog entrys ud korrekt.



Gnu, det er meget fint script.
Men jeg kan ikke få den til vise rigtigt med information.

Førstee side er der 5 på næste side er der 8

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 03.06.2007 08:34 af Bruger #11553
Det er simpelthen fordi din sql er forkert... :)

der skal stå "...LIMIT [start], [antal]" og IKKE "...LIMIT [start],[slut]"

Dvs.:
Fold kodeboks ind/udKode 




Jeg kan ikke få skidtet til at virke

Jeg har prøvet og prøvet :S

Her er hele min kode (I kan også se den her: http://pastebin.ca/548566 hvor der er highlighting på)

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 07.06.2007 21:36 af Bruger #11386
t