Avatar billede michael_f Nybegynder
15. december 2004 - 19:37 Der er 4 kommentarer

Bladre imellem resultater fra en database

Jeg har hentet data fra en database. Men hvis der er flere resultater så vil jeg gerne have mulighed for at trykke på "næste" og "tilbage" for på den måde at kunne navigere rundt i resultaterne.

Er der nogen som ved hvordan det gøres?
Avatar billede Slettet bruger
15. december 2004 - 20:04 #1
Helt og aldeles utestet:

<?php
$rows_pr_side = 15;
$start = ($rows_pr_side * ($_GET['page'] - 1));
$query_count = "SELECT * FROM tabel WHERE 1";
$antal_rows = mysql_num_rows(mysql_query($query_count));
$query_view = $query_count." LIMIT ".$start." , ".$rows_pr_side;
$antal_rows_vist = mysql_num_rows(mysql_query($query_view));
echo "<p>".$antal_rows." rækker fundet.<br />Her vises fra ".($start + 1)." til ".($start + $antal_rows_vist)."</p>";
if ($antal_rows > 0) {
  echo "<p>";
  if (($start + $antal_rows_vist) < $antal_rows) {
    echo "<a href=\"".$_SERVER['PHP_SELF']."?page=".($_GET['page'] + 1)."\">Næste</a> ";
  }
  if (($start) > 0) {
    echo "<a href=\"".$_SERVER['PHP_SELF']."?page=".($_GET['page'] - 1)."\">Forrige</a>";
  }
  echo "</p>";
  //vis søgeresultater..
}
?>
Avatar billede michael_f Nybegynder
16. december 2004 - 09:09 #2
tak for svaret. kan du ikke forklare linjerne?
Avatar billede Slettet bruger
16. december 2004 - 09:50 #3
Jo da..
Men virker det ikke godt nok? Du skal huske at linke til den første side side.php?page=1

<?php
$rows_pr_side = 15; //Antal resultater pr side, her 15
$start = ($rows_pr_side * ($_GET['page'] - 1)); //Sætter start limit til MySQL udtrækket. (Du skal linke til den første side som side.php?page=1)
$query_count = "SELECT * FROM tabel WHERE 1"; //Query som tæller hvor mange resultater der er ialt. (Samtlige sider)
$antal_rows = mysql_num_rows(mysql_query($query_count)); //Udfører overstående query og tæller dem derefter.
$query_view = $query_count." LIMIT ".$start." , ".$rows_pr_side; //Query med start ved $start og $rows_pr_side records frem
$antal_rows_vist = mysql_num_rows(mysql_query($query_view)); //Udfører overstående query og tæller resultaterne
echo "<p>".$antal_rows." rækker fundet.<br />Her vises fra ".($start + 1)." til ".($start + $antal_rows_vist)."</p>"; //Tja.. Viser bare start og slut osv.
if ($antal_rows > 0) { //vis kun dit udtræk hvis der er flere end 0 records
  echo "<p>";
  if (($start + $antal_rows_vist) < $antal_rows) {
    echo "<a href=\"".$_SERVER['PHP_SELF']."?page=".($_GET['page'] + 1)."\">Næste</a> "; //Link til næste side, hvis slut er mindre en records ialt.
  }
  if (($start) > 0) {
    echo "<a href=\"".$_SERVER['PHP_SELF']."?page=".($_GET['page'] - 1)."\">Forrige</a>"; //Link til forrige side, hvis start er højere end 0.
  }
  echo "</p>";
  //vis søgeresultater..
}
?>
Avatar billede michael_f Nybegynder
18. december 2004 - 12:17 #4
Hej. Jeg har microsoft sql server. Hvordan laver jeg samme udtryk som beskrevet her:

$query_view = $query_count." LIMIT ".$start." , ".$rows_pr_side; //Query med start ved $start og $rows_pr_side records frem

Er der en funktion, som hedder "continue". Jeg ville gerne have det sådan at den fortsatte med at udskrive resultater(hvis der er flere end 1 række)når man trykke på næste. Din kode kan jeg ikke rigtig overskue. Jeg er nybegynder i PHP skal det siges.
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