Avatar billede blach Nybegynder
19. december 2003 - 20:56 Der er 16 kommentarer og
1 løsning

Side 1 | 2 | 3 | osv.

Jeg har en kode hvor jeg kan trykke <frem> og <tilbage> i et udtræk fra en database..
Men hvordan laver jeg så man kan "springe" rundt - altså trykke på Vis 1 | 2 | 3 | osv?

Og hvordan skriver jeg "Du ser nu xx ud af $total".

Min kode er her:
-- cut --
$pr_side = 10; // Antal poster pr. side
if (isset($_GET['s'])) {
    $s = $_GET['s'];
} else {
    $s = 0;
}

$query = mysql_query("SELECT * FROM xxx WHERE mappe='$mappe' AND godkendt='1' ORDER BY titel LIMIT $s,$pr_side") or die(mysql_error());
while($row = mysql_fetch_array($query)){
// UDTRÆK FRA DATABASE
}

$g_total = mysql_query("SELECT COUNT(nr) AS TOTAL FROM xxx WHERE mappe='$mappe' AND godkendt='1'") or die(mysql_error());
$total = mysql_result($g_total,0);
echo '<BR><CENTER>';
if ($s >= $pr_side) {
    $previous_s = $s-$pr_side;
    echo "<a href='index.php?side=links&underside=kategori&mappe=".$mappe."&s=$previous_s'><IMG SRC='graph/knap_tilbage.jpg' BORDER='0'></a> ";
}
if ($total > $s+$pr_side) {
    $next_s = $s+$pr_side;
    echo "<a href='index.php?side=links&underside=kategori&mappe=".$mappe."&s=$next_s'><IMG SRC='graph/knap_frem.jpg' BORDER='0'></a>";
}
--cut--
Avatar billede netro Nybegynder
19. december 2003 - 21:04 #1
Det kaldes paging. Nu arbejder jeg ikke med PHP, men MySQL har en funktion kaldet LIMIT, du skal gøre brug af.

Select * From Tabel Order By Felt Limit 10, 20
Avatar billede blach Nybegynder
19. december 2003 - 21:34 #2
øøhh, hvad skal jeg bruge det til? Jeg har sagt (og vist i mit script) at jeg gør brug af LIMIT!!
Avatar billede netro Nybegynder
19. december 2003 - 21:49 #3
Undskyld - det overså jeg.
Avatar billede eagleeye Praktikant
19. december 2003 - 22:19 #4
Du kan tilføje dette efter du har hendte $total:



$antal_sider = ceil($total/$pr_side);
echo "Du er ser nu side ".(1+$s/$pr_side)." ud af ".$antal_sider;
$temp = 0;
$pages = "Vis ";
while ($temp < $antal_sider)
{
  $temp2 = $temp+1;
  $next_s = $temp * $s;
  $pages .= "<a href='index.php?side=links&underside=kategori&mappe=".$mappe."&s=$next_s\">$temp2</a> ";
  $temp++;
}   
echo $pages;
Avatar billede blach Nybegynder
19. december 2003 - 23:45 #5
eagleeye: Det ser rigtig godt ud, dog er der 1 fejl: Når jeg går ind i på udtrækket første gang, der er f.eks. 93 udtræk, de vises i 10 sektioner. Så skriver den i linket ...&s=0 ved alle sammen (Vis 1 2 3 4 5 6 7 8 9 10). Hvis jeg dog trykker næste (mit eget grafik link) - så virker det... altså &s=0/10/20/30/40/50/60/70/80/90

Kan man ikke gøre noget så der virker når man kommer ind første gang?
Avatar billede blach Nybegynder
19. december 2003 - 23:46 #6
netro --> Alt forladt!
Avatar billede blach Nybegynder
19. december 2003 - 23:49 #7
eagleeye --> Der er mere i vejen: Når jeg viser s=20 så springer dine med 20-intervaller
altså Vis 1 er lig s=0, vis 2 er lig 2=20, vis 3 er lig s=40 osv...
s=40 så springer den med 40-intervaller..


Der er noget galt i den udregning!
Avatar billede eagleeye Praktikant
19. december 2003 - 23:53 #8
Hov ja jeg ganger med $s og ikke $pr_side et sted.

Denne her linje:
$next_s = $temp * $s;

Skal være:
$next_s = $temp * $pr_side;
Avatar billede blach Nybegynder
19. december 2003 - 23:57 #9
Yes det virker :]

tak for hjælpen!
Avatar billede blach Nybegynder
19. december 2003 - 23:59 #10
Kan man gøre sådan at den side man er på, er markeret?? (<B></B>/linkes ikke eller sådan noget)
Avatar billede eagleeye Praktikant
20. december 2003 - 00:04 #11
Ja det kan man, prøv at lave loopet om til dette:


while ($temp < $antal_sider)
{
  $temp2 = $temp+1;
  $next_s = $temp * $pr_side;
  if ($s==$next_s) {
    $pages .= "<b>".$temp2."</b> ";
  } else {
    $pages .= "<a href='index.php?side=links&underside=kategori&mappe=".$mappe."&s=$next_s\">$temp2</a> ";
  }
  $temp++;
}
Avatar billede Slettet bruger
20. december 2003 - 00:07 #12
Ja, lav denne linie

$pages .= "<a href='index.php?side=links&underside=kategori&mappe=".$mappe."&s=$next_s\">$temp2</a> ";


om til:

if ($s==$next_s){
$pages .= "<b>$temp2</b> ";
} else {
$pages .= "<a href='index.php?side=links&underside=kategori&mappe=".$mappe."&s=$next_s\">$temp2</a> ";
}
Avatar billede blach Nybegynder
20. december 2003 - 00:08 #13
kanon!
Avatar billede Slettet bruger
20. december 2003 - 00:08 #14
Det var vi da temmelig enige om.
Avatar billede blach Nybegynder
20. december 2003 - 00:08 #15
Måske du kan hjælpe her også?
http://www.eksperten.dk/spm/441763
Avatar billede blach Nybegynder
20. december 2003 - 00:09 #16
Desværre sandbox.. Men kan du ikke fixe kalenderen?
Avatar billede Slettet bruger
20. december 2003 - 00:17 #17
Jeg havde da ikke tænkt mig at skulle tage point fra eagleeye for den lille rettelse.
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