Avatar billede xenoxsis Nybegynder
13. september 2006 - 11:27 Der er 5 kommentarer og
1 løsning

Side angivelse

Hej.

Jeg prøver at lave et nyheds system hvor man kan bladre i nyhederne, så man kan se de første 5 nyheder og så trykke "next page" og se de næste 5.

Det lykkedes mig på et tidspunkt at lave det, bortset fra at next og back ikke kunne slås fra automatisk når der ikke var flere sider. Det var vældig irriterende.

Er der nogen der kan komme med pointers? Jeg bruger MySQL forresten.
Avatar billede onkel_satan Nybegynder
13. september 2006 - 12:09 #1
// antal nyuheder pr. side
$antalNyheder = 10;
// Find start position. Set til 0 hvis der ikke er sendt en startposition.
$start = isset($_GET['start']) && $_GET['start'] > 0 ? $_POST['start'] : 0;
// hent nyheder
$sqlQuery = "SELECT * FROM nyhed LIMIT $start, $limit";
$reuslt = mysql_hent_funktion($sqlQuery);
// Naeste link
$naeste  = count($result) == $antalNyheder ? "<a href='sammeSide?start=".$start+$antalNyheder."'></a>" : " ";
// Tilbage link
$tilbage = $start-$antalNyheder >= 0 ? "<a href='sammeSide?start=".$start-$antalNyheder."'></a>" : " ";
// Udskriv links
echo $tilbage . " " . $naeste;
Avatar billede onkel_satan Nybegynder
13. september 2006 - 12:16 #2
Ovenstånden mangler dog at tage hoejde for en ting. Hvis der f.eks. er praecis 10 nyheder vil den generere et 'naete' link som vil vaere tom hvis man trykkede på den. Du kan lave en andet kald til db'sen for at finde ud af hvor mange nyheder der er totalt. Hvis $start+count($result) == $antalNyhederTotal skal den ikke lave et naeste link.
Avatar billede onkel_satan Nybegynder
13. september 2006 - 12:18 #3
$sqlQuery = "SELECT * FROM nyhed LIMIT $start, $limit";
skal selvfoelgelig vaere:
$sqlQuery = "SELECT * FROM nyhed LIMIT $start, $antalNyheder";
Avatar billede xenoxsis Nybegynder
13. september 2006 - 17:02 #4
$start = isset($_GET['start']) && $_GET['start'] > 0 ? $_POST['start'] : 0; <--- Hvad gør det spørgsmålstegn der.

Hvad er det at den select query gør at du har skrevet. Jeg mener: LIMIT <tal1>, <tal2> hvad står tal1 og tal2 for?
Avatar billede onkel_satan Nybegynder
14. september 2006 - 02:55 #5
det er bare en lidt lettere måde at skrive en if else saetning.
if($a < $b){
    echo "b er stoerre end a";
}else{
    echo "a er stoerre end b";
}

er det samme som

echo $a < $b ? "b er stoerre end a" : "a er stoerre end b";

tal1 er start positionen og tal2 er antallet at row's den skal traekke ud.
Så hvis hele din tabel indeholder 20 nyheder og du skriver LIMIT 15, 5 vil den hente 15-20 ud.
Avatar billede xenoxsis Nybegynder
14. september 2006 - 09:20 #6
Tusind tak. Det hjælper.

30 points til dig.
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