Avatar billede zpanzer Nybegynder
04. maj 2004 - 22:07 Der er 3 kommentarer og
1 løsning

Paging i PHP.

Jeg har et lille script som skal lave flere sider til nyheder.
Den virker på den måde at den skriver "Næste" hvis der er flere nyheder og så "Tilbage" hvis der ikke er flere osv.
Den virker til dels også, den skriver linket på første side og tilbage linket på side nr 2, men den viser ikke flere nyheder selvom at der er flere nyheder i databasen.

Her er koden:

<?php
$query = mysql_query("select * from xcms_info");
while($row = mysql_fetch_array($query)) {
$antal = $row["nyhed"];
}
$page = $HTTP_GET_VARS['page'];
if(!$page) $page= '1';
$news = mysql_query("select * from xcms_news");
$total = mysql_num_rows($news);
$last = ($page * 5);
$start = ($last - 4);
$start = ($start -1);
$query = mysql_query("select * from xcms_news order by id desc limit $start, $antal");
while($row = mysql_fetch_array($query)) {
echo "<div class='kasse'><div class='text'>".$row["titel"] ."<br /><hr />".$row["nyhed"] ."<br /><br /><i>Skrevet af: ".$row["forfatter"] ."</i></div></div><br />";
}   
$limit = '5';
//$numPages = ceil($total / $limit);
$next = $page +1;
$prev = $page -1;
if($page > 1) print("<a href=\"index.php?p=&amp;page=".$prev."\">Tilbage</a>");
if(($page > 1) && ($total - $last > 1)) print(" | ");
if($total - $last > 1) print("<a href=\"index.php?p=&amp;page=".$next."\">Næste</a>");
?>
Avatar billede sylvesternielsen Nybegynder
05. maj 2004 - 04:57 #1
Tror din fejl ligger her:
while($row = mysql_fetch_array($query)) {
$antal = $row["nyhed"];
}

$antal skal være = $limit i forhold til dit script da det er den variabel som fortæller hvor mange sider som skal vises og $start som fortæller hvor de skal vises fra.
Avatar billede sylvesternielsen Nybegynder
05. maj 2004 - 04:57 #2
Det var et svar forresten.
Avatar billede b4r0n3n Nybegynder
05. maj 2004 - 09:26 #3
<?
$limit = 5;

if (!$start_nr OR $start_nr < 0) {
$start_nr = 0;
}
$count = mysql_query("select * from xcms_news");
$antal = mysql_num_rows($count);
$query = mysql_query("SELECT * FROM xcms_news order by id desc limit $start_nr, $limit");

if ($antal > ($start_nr + $limit)) {
$naeste_start_nr = $start_nr + $limit;
echo "<a href='index.php?start_nr=$naeste_start_nr'>Næste</a>";
} else {
echo "Næste";
}
echo " - ";
if ($start_nr > 0 && ($start_nr - $limit) < $antal) {
$forrige_start_nr = $start_nr - $limit;
echo "<a href='index.php?start_nr=$forrige_start_nr'>Tilbage</a>";
} else {
echo "Tilbage";
}

while ($row = mysql_fetch_array($query)) {
echo "<div class='kasse'><div class='text'>".$row["titel"] ."<br /><hr />".$row["nyhed"] ."<br /><br /><i>Skrevet af: ".$row["forfatter"] ."</i></div></div><br />";
}
?>
Avatar billede zpanzer Nybegynder
05. maj 2004 - 15:46 #4
Det virkede nu ikke, men jeg løste problemet, ved dog ikke helt hvordan :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester