Avatar billede hmortensen Nybegynder
22. juni 2003 - 15:22 Der er 7 kommentarer og
2 løsninger

10 på hver side

Hvordan trækker jeg 10 poster ud på en side, og så et link til næste side, hvor jeg så trækker de 10 næste ud ?
Avatar billede schaefner Juniormester
22. juni 2003 - 15:24 #1
<?php
$offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0; // Hvis ikke $offset er sat, sættes den til 0
$pr_side = 10; // Antal resultater pr. side

// Henter poster fra databasen
$query = mysql_query("SELECT * FROM tabel ORDER BY id DESC LIMIT $offset,$pr_side") or die (mysql_error());
while($row = mysql_fetch_array($query)) {
    echo "$row[id] - $row[felt]<br>";
}
?>
<hr>
<?php
// Tæller antal poster i databasen
$tael = mysql_query("SELECT COUNT(*) AS antal FROM tabel") or die (mysql_error());
$antal = mysql_result($tael,0);

//Koden herunder burde give sig selv, hvis du kan lidt matematik
if ($offset >= $pr_side) {
    $forrige = $offset-$pr_side;
    echo "<a href='?offset=$forrige'>Forrige</a> ";
}
if ($antal > $offset+$pr_side) {
    $naeste = $offset+$pr_side;
    echo "<a href='?offset=$naeste'>Næste</a>";
}
?>
Avatar billede hmortensen Nybegynder
22. juni 2003 - 15:25 #2
Der ser ok ud, men fatter dog ikke lige den her linie:
$offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0; // Hvis ikke $offset er sat, sættes den til 0
Avatar billede jakoba Nybegynder
22. juni 2003 - 15:29 #3
På den måde VED vi bagefter at variabelen  $offset  har en værdi. (defaultværdien er 0)
Avatar billede hmortensen Nybegynder
22. juni 2003 - 15:31 #4
Ok, jeg leger lige lidt med det senere...
Avatar billede ahv Nybegynder
22. juni 2003 - 15:31 #5
En hvor du også kan springe i siderne (Der hvor den tæller antallet kan sikkert optimeres) ->


$prside = 10;
$visfra = $_GET['visfra'];

if(!$_GET['visfra']) $visfra = 0;

$query = mysql_query ("SELECT * FROM tabel ORDER BY id DESC limit $visfra, $prside"); // Dit database udtræk
while ($row = mysql_fetch_array($query)) {
    echo $row['id']."<br>";
}

$antal = mysql_num_rows(mysql_query("SELECT * FROM tabel"));

if ($visfra > 0) {
    $bagud = $visfra-$prside;
    echo "<a href='$_SERVER[PHP_SELF]?visfra=$bagud'>Forrige</a> ";
}
$page = 1;
for ($start = 0; $antal > $start; $start = $start + $prside) {
    if($visfra != $page * $prside - $prside) {
        echo "<a href='$_SERVER[PHP_SELF]?visfra=$start'>$page</a> ";
    } else {
        echo $page." ";
    }
    $page++;
}
if ($visfra < $antal - $prside) {
    $naeste = $visfra + $prside;
    echo " <a href='$_SERVER[PHP_SELF]?visfra=$naeste'>Næste</a>";
}
Avatar billede jakoba Nybegynder
22. juni 2003 - 15:31 #6
eller er det ? : operatoren du ikke kender ?
  $resultat =  (betingelse) ? "værdi hvis true" : "værdi hvis false";
variabelen $resultat får en af de 2 værdier altefter om betingelsen er sand eller ikke.
Avatar billede schaefner Juniormester
22. juni 2003 - 15:33 #7
det samme som:

if ( isset($_GET['offset') ) {
  $offset = $_GET['offset'];
} else {
  $offset = 0;
}
Avatar billede schaefner Juniormester
22. juni 2003 - 15:36 #8
og en herfra hvor du også kan springe imellem siderne:

<?php
$offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0; // Hvis ikke $offset er sat, sættes den til 0
$pr_side = 10; // Antal resultater pr. side

// Henter poster fra databasen
$query = mysql_query("SELECT * FROM tabel ORDER BY id DESC LIMIT $offset,$pr_side") or die (mysql_error());
while($row = mysql_fetch_array($query)) {
    echo "$row[id] - $row[felt]<br>";
}
?>
<hr>
<?php
// Tæller antal poster i databasen
$tael = mysql_query("SELECT COUNT(*) AS antal FROM tabel") or die (mysql_error());
$antal = mysql_result($tael,0);

//Koden herunder burde give sig selv, hvis du kan lidt matematik
if ($offset >= $pr_side) {
    $forrige = $offset-$pr_side;
    echo "<a href='?offset=$forrige'>Forrige</a> ";
}
$page = 1;
for($start=0; $antal > $start; $start=$start+$pr_side){
    if ($start != $offset) {
        echo "<a href='?offset=$start'>$page</a> ";
    } else {
        echo "$page ";
    }
    $page++;
}
if ($antal > $offset+$pr_side) {
    $naeste = $offset+$pr_side;
    echo "<a href='?offset=$naeste'>Næste</a>";
}
?>
Avatar billede hmortensen Nybegynder
22. juni 2003 - 16:17 #9
Jeg har valgt schaefner's nederst løsning, som virker perfekt sammen med min eksisterende kode.
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