Avatar billede webcreator Nybegynder
19. maj 2003 - 20:34 Der er 11 kommentarer og
1 løsning

Top 10 samt links til de næste 10 i databasen

Hej.

Jeg har flg. kode :

$conn = mysql_connect("localhost", "jemt", "mscool");
mysql_select_db("jemt");
$r = mysql_query("select * from $fag");
while ($row = mysql_fetch_array($r))

Jeg kender TOP 10 fra ASP, når de seneste 10 poster hentes fra databasen. Det jeg vil lave her, er dog lidt mere omstændigt. Jeg kunne nemlig godt tænke mig, at de 10 seneste blev vist, og efterfølgende blev to links genereret, hvortil de gik til de 10 næste, eller de 10 forrige.

Jeg kunne forestille mig det kunne bygges med variabler, der trækker tal fra, eller lægger dem til startværdien. Men jeg har ikke umiddelbart nogen ideer til, hvordan jeg skal gribe det an.

Nogen der kan give mig en kick-starter her ?
Avatar billede schaefner Juniormester
19. maj 2003 - 20:35 #1
Avatar billede schaefner Juniormester
19. maj 2003 - 20:38 #2
<?php
$pr_side = 10;
if (isset($s)) {
    $s = $_GET['s'];
} else {
    $s = 0;
}

mysql_connect("localhost", "jemt", "mscool");
mysql_select_db("jemt");
$r = mysql_query("SELECT * FROM $fag");
while ($row = mysql_fetch_array($r)) {
    echo "$row[felt]<br>";
}

$g_total = mysql_query("SELECT COUNT(*) AS total FROM $fag") or die(mysql_error());
$total = mysql_result($g_total,0);
if ($s >= $pr_side) { //Tjekker om værdien af $s er større eller lig $pr_side
    $previous = $s-$pr_side; //Regner ud hvor mysql skal starte hvis forrige side kaldes
    echo "<a href='?s=$previous'>Forrige</a> "; //Udskriver linket
}
if ($total > $s+$pr_side) { //Tjekker om der er flere sider
    $next = $s+$pr_side; //Regner ud hvor mysql skal starte hvis næste side kaldes
    echo "<a href='?s=$next'>Næste</a>"; //Udskriver linket "næste"
}
?>
Avatar billede schaefner Juniormester
19. maj 2003 - 20:39 #3
if (isset($s)) {
    $s = $_GET['s'];
} else {
    $s = 0;
}

skal lige være:

if (isset($_GET['s'])) {
    $s = $_GET['s'];
} else {
    $s = 0;
}
Avatar billede webcreator Nybegynder
19. maj 2003 - 20:58 #4
Jeg synes ikke resultatet blev helt godt :
You have an error in your SQL syntax near '' at line 1
Avatar billede webcreator Nybegynder
19. maj 2003 - 21:03 #5
Vent lidt.. Tror jeg har løst problemet.
Avatar billede webcreator Nybegynder
19. maj 2003 - 21:08 #6
virker næsten. Jeg har to poster i min DB. Så hvis jeg skriver at der skal være EN post pr. side, så vises begge to alligevel. Men Næste kommer dog frem. Og trykker jeg på det link, så kommer jeg også til den næste side (dog med samme to poster). Og her vises "forrige"-linket også.
Avatar billede schaefner Juniormester
19. maj 2003 - 21:26 #7
Det er mig der har lavet en fejl. Skal være:

$r = mysql_query("SELECT * FROM $fag LIMIT $s,$pr_side");
Avatar billede webcreator Nybegynder
19. maj 2003 - 21:39 #8
Uh, det virker perfekt :-)

Men hvordan kan det være, at linksn'e kommer OVEN OVER tabellen, i stedet for under ?
Avatar billede schaefner Juniormester
19. maj 2003 - 21:40 #9
Der er ingen tabeller i det jeg har postet, så hvor skulle jeg vide det fra?
Avatar billede webcreator Nybegynder
19. maj 2003 - 21:51 #10
Well, jeg har en tabel øverst, som udskriver overskrifterne for de værdier, der bliver hentet fra databasen. Efterfølgende oprettes der forbindelse til DB'en.  Herunder udskrives værdierne fra databasen i celler under de allerede eksisterende tabeller fra før, og efterfølgende kommer koden til generering af links.
Avatar billede webcreator Nybegynder
19. maj 2003 - 22:08 #11
Ah, ved godt hvorfor..
Avatar billede webcreator Nybegynder
19. maj 2003 - 22:15 #12
Tak for hjælpen :-)
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