Gå til innhold

Maks 10 el. 20 sider i et pagination script, slik som google?


Anbefalte innlegg

Hei

 

Hvordan kan jeg gjøre sånn at det vises bare 10 eller 20 sider eller noe om gangen på antall sider man får opp i et pagination script?

 

Koden jeg har:

 

Klikk for å se/fjerne innholdet nedenfor
<?php
if(!isset($_GET['p'])) {
$page = 1;
}
else {
$page = intval($_GET['p']);
}

// How many results per page:
$max_news = 1;

$start = ($page * $max_news) - $max_news;

$query = mysql_query("SELECT * FROM tabell WHERE sid = $id ORDER BY id DESC LIMIT $start, $max_news");

while($row = mysql_fetch_array($query)) {
?>

while-løkke

<?php
}

$sql = mysql_query("SELECT * FROM tabell WHERE sid = $id");
$result = mysql_num_rows($sql);

$total_pages = ceil($result / $max_news);

for($i = 1; $i <= $total_pages; $i++) {
if($i == $page) {
echo $i;
}
else {
echo '<a href="index.php?p=' . $i . '">' . $i . '</a>';
}
}

?>

 

 

Hvis den nå får 30 resultater, så står det link til 29 sider + en vanlig tekst med hvilken side man er på, men hvordan kan gjøre slik at det blir sånn her liksom:

post-111209-1205755928_thumb.jpg

altså sånn at i stedet for at det står 30 linker så står det bare 10 om gangen hvis noen skjønner...hehe

 

 

takker for hjelp

Endret av Anders Moen
Lenke til kommentar
Videoannonse
Annonse

Hei

 

Du må ha en variabel start på for løkken din, samt en varibel slutt.

 

starten og slutten på for løkken beregnes ut fra hvor mange sider som skal vises, og hvilken side man er på.

 

Skal prøve å forklare det uten å gi deg koden direkte;

 

Startverdien blir aktivside - int(sidersomskalvises/2)

Sluttverdien blir aktivside + int(sidersomskalvises/2)

 

Dersom aktivside er mindre enn int(sidersomskalvises/2) blir startverdien 1

Dersom (aktivside + int(sidersomskalvises/2)) er større enn totalt antall sider, blir sluttverdien totaltantallsider.

 

Sånn cirka...

 

Gjør dette om til php kode, så har du løst det, tenker jeg.

 

Dersom det jeg skrev ble helt uforståelig, så si fra, så kan jeg heller skrive litt kode, som kanskje blir litt lettere å forstå

 

EDIT: Koden du får ut av dette må legges inn mellom

$total_pages = ceil($result / $max_news);

og

for($i = 1; $i <= $total_pages; $i++) {

Denne siste kan f.eks se slik ut etter du er ferdig:

for($i = $forstart; $ i<= $forslutt; $i++) {

Endret av kakkle
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...