Avatar billede downloadcentral.dk Nybegynder
18. april 2004 - 17:55 Der er 40 kommentarer og
1 løsning

Paging i php

Jeg ved at dette spørgsmål alledere er blevet stillet adskillige gange, men selvom jeg har læst de svar kan jeg ikke få paging til at virke på min side.

Derfor ville jeg blive meget glad for noget copy/paste-agtigt noget der gør der vises max ti downloads pr side og de automatisk laves en menu med tilbage - sidetal - frem hvor frem og tilbage skal være billeder som jeg selv laver.

Gerne skriv hvor jeg selv skal udfylde noget i koden! :)
Siden det være på er www.dload.dk, hvis det kan hjælpe.
Avatar billede sqren Nybegynder
18. april 2004 - 18:00 #1
<?
if($page == "") {
$page = "1";
}

$limit = 10;

$udcount= "SELECT * FROM tabel ORDER BY id DESC LIMIT 10";

$ud_countresult = mysql_query($udcount, $connection) or die ("Couldn't execute query");
$totalrows = mysql_num_rows($ud_countresult);

if(empty($page)){
$page = 10;
}

$limitvalue1 = $page*$limit-($limit);

$ud = mysql_query("SELECT * FROM tabel DESC LIMIT $limitvalue1, $limit");
while ($row = mysql_fetch_array($ud)) {
echo $row[download]
}

if($pageprev = $page - 1) {
echo " <A HREF=\"?page=$pageprev\"><</A>";
}


$numofpages = $totalrows/$limit;

for($i= 1; $i < $numofpages+1; $i++) {
echo " <A HREF=\"?page=$i\">$i</A>";
}


if(($totalrows-($limit*$page)) > 0){
$pagenext = $page + 1;
echo " <A HREF=\"?page=$pagenext\">></A>";
}
Avatar billede downloadcentral.dk Nybegynder
18. april 2004 - 18:01 #2
Skal jeg så skrive alle steder hvor der står * eller?!
Avatar billede sqren Nybegynder
18. april 2004 - 18:16 #3
Undskyld der var 1000 fejl!

Her kommer en ny uden fejl! Bare spørg!

<?
if(empty($page)){
$page = 1;
}

#Rækker pr side
$limit = 3;

#Skift din_egen_tabel
$ud_countresult = mysql_query("SELECT * FROM din_egen_tabel ORDER BY id")or die(mysql_error());
$totalrows = mysql_num_rows($ud_countresult);



$limitvalue1 = $page*$limit-($limit);

#Skift din_egen_tabel
$ud = mysql_query("SELECT * FROM din_egen_tabel LIMIT $limitvalue1, $limit")or die(mysql_error());
while ($row = mysql_fetch_array($ud)) {
echo $row[nick]."<br>";
}

#Tilbage Knap
if($pageprev = $page - 1) {
echo " <A HREF=\"?page=$pageprev\"><</A>";
}


$numofpages = $totalrows/$limit;

#Siderne
for($i= 1; $i < $numofpages+1; $i++) {
echo " <A HREF=\"?page=$i\">$i</A>";
}

#Frem Knap
if(($totalrows-($limit*$page)) > 0){
$pagenext = $page + 1;
echo " <A HREF=\"?page=$pagenext\">></A>";
}
?>
Avatar billede dennismp Nybegynder
18. april 2004 - 18:16 #4
http://dennis.moellegaard.dk/v4/php/pager.php?source=2

du skal rette:
require_once("lib/db.php");        // Connect to DB
skal erstattes med mysql_connect()/mysql_select_db
$nextLink1  her kan du putte et <img src..billede> ind
$nextLink2  her kan du putte et billede ind, hvis next skal være ghosted (på sidste side, hvor der ikke er en next)
$prevLink1/$nextLink2  . det samme som nextLink1 og 2
$sqlCount  sql der tæller alle rækker
$sqlSelect  sql der vælger informationerne

i bunden finder du showRow($row) som er en funktion hvor du skriver hvordna en række skal vises.
Avatar billede dennismp Nybegynder
18. april 2004 - 18:18 #5
Du skal kun rette indtil //***** linjen.. Resten bør kunne bruges som det er.

Du kan se, på samme side, at det virker.. Du kan evt prøve at trykke next/prev :-).
Avatar billede sqren Nybegynder
18. april 2004 - 18:19 #6
Du skal også huske en forbindelse til databasen. Det gøres ved at sætte denne kode øverst i dokumentet:

$server = "localhost";
$username = "brugernavn";
$password = "password";
$database = "database";
$connection = mysql_pconnect($server,$username,$password);
mysql_select_db($database);

(Husk at tilrette det til dig selv!)
Avatar billede downloadcentral.dk Nybegynder
18. april 2004 - 19:23 #7
Okay MANGE tak begge to, kigger lige på de tom et øjeblik :)
Avatar billede downloadcentral.dk Nybegynder
18. april 2004 - 20:01 #8
Jeg skal ikke ændre heri eller?

<A HREF=\"?page=$pageprev\">Tilbage</A>"; og her <A HREF=\"?page=$i\">$i</A>";

Jeg mener adressen?!
Avatar billede downloadcentral.dk Nybegynder
18. april 2004 - 20:03 #9
Den ser sådan her ud nu:

<?
require_once('database.php');

if(empty($page)){
$page = 1;
}

#Rækker pr side
$limit = 5;

#Skift din_egen_tabel
$ud_countresult = mysql_query("SELECT * FROM dlc_files ORDER BY title")or die(mysql_error());
$totalrows = mysql_num_rows($ud_countresult);



$limitvalue1 = $page*$limit-($limit);

#Skift din_egen_tabel
$ud = mysql_query("SELECT * FROM dlc_files LIMIT $limitvalue1, $limit")or die(mysql_error());
while ($row = mysql_fetch_array($ud)) {
echo $row[nick]."<br>";
}

#Tilbage Knap
if($pageprev = $page - 1) {
echo " <A HREF=\"?page=$pageprev\">Tilbage</A>";
}


$numofpages = $totalrows/$limit;

#Siderne
for($i= 1; $i < $numofpages+1; $i++) {
echo " <A HREF=\"?page=$i\">$i</A>";
}

#Frem Knap
if(($totalrows-($limit*$page)) > 0){
$pagenext = $page + 1;
echo " <A HREF=\"?page=$pagenext\">Frem</A>";
}
?>
Avatar billede sqren Nybegynder
18. april 2004 - 20:07 #10
Nej du behøver ikke ændre adressen. Har du da problemer?
Avatar billede downloadcentral.dk Nybegynder
18. april 2004 - 20:07 #11
Nope :) Ville bare være sikker. Prøver nu :)
Avatar billede downloadcentral.dk Nybegynder
18. april 2004 - 20:10 #12
Avatar billede downloadcentral.dk Nybegynder
18. april 2004 - 20:10 #13
Hvad er der galt? :)
Avatar billede sqren Nybegynder
18. april 2004 - 20:12 #14
Du skal ændre denne linie:

echo $row[nick]."<br>";

Til:

echo $row[din_egen_række];
Avatar billede downloadcentral.dk Nybegynder
18. april 2004 - 20:13 #15
Og hvad er det for en række jeg skal skrive der?!
Avatar billede sqren Nybegynder
18. april 2004 - 20:16 #16
Dette er blot et forsøg:

<?
require_once('database.php');

if(empty($page)){
$categoryid = 1;
}

#Rækker pr side
$limit = 5;

#Skift din_egen_tabel
$ud_countresult = mysql_query("SELECT * FROM dlc_files ORDER BY title")or die(mysql_error());
$totalrows = mysql_num_rows($ud_countresult);



$limitvalue1 = $categoryid*$limit-($limit);

#Skift din_egen_tabel
$ud = mysql_query("SELECT * FROM dlc_files LIMIT $limitvalue1, $limit")or die(mysql_error());
while ($row = mysql_fetch_array($ud)) {
echo $row[nick]."<br>";
}

#Tilbage Knap
if($pageprev = $categoryid - 1) {
echo " <A HREF=\"?categoryid=$pageprev\">Tilbage</A>";
}


$numofpages = $totalrows/$limit;

#Siderne
for($i= 1; $i < $numofpages+1; $i++) {
echo " <A HREF=\"?categoryid=$i\">$i</A>";
}

#Frem Knap
if(($totalrows-($limit*$categoryid)) > 0){
$pagenext = $categoryid + 1;
echo " <A HREF=\"?categoryid=$pagenext\">Frem</A>";
}
?>

Hvordan ser strukturen ud i dlc_files?
Avatar billede downloadcentral.dk Nybegynder
18. april 2004 - 20:21 #17
Nej, det virker slet ikke :) Der findes to tabeller. dlc_category og dlc_files. category er menuen til venstre. files er alle filerne der hver er delt op i category.

DLC_FILES:

http://mydb1.surftown.dk/phpMyAdmin/index.php

bruger: MMJ84_sqren
pass  : ekspert
Avatar billede downloadcentral.dk Nybegynder
18. april 2004 - 20:36 #18
Siger det dig noget?
Avatar billede dennismp Nybegynder
18. april 2004 - 20:51 #19
download; har du lagt dig fuldt fast på sqrens løsning? For ellers vil jeg afmelde alle de mails der kommer :)
Avatar billede downloadcentral.dk Nybegynder
18. april 2004 - 20:51 #20
Ikke hvis du har et bud der virker :) :)
Avatar billede downloadcentral.dk Nybegynder
18. april 2004 - 20:52 #21
Skal bare ha det op og køre ordentligt hurtigst muligt
Avatar billede dennismp Nybegynder
18. april 2004 - 20:58 #22
Well, buddet er stadig det samme script - har lige udvidet det med lidt ekstra (mulihed for "Start" og "End"-links).. Men jeg skal se film nu :-)
Avatar billede downloadcentral.dk Nybegynder
18. april 2004 - 20:59 #23
Men er der her taget højde for de forskellige categorier osv?
Avatar billede sukos Juniormester
18. april 2004 - 21:23 #24
æhh, nu ved jeg ikke lige, lyder som om du har brug for et "designet" script til din side?

Anyway, har den her:

function link($getvar, $tx, $filnavn="", $class="") {
if(empty($filnavn)) {
$filename = $_SERVER["PHP_SELF"];
}else{
$filename = $filnavn;
}
return "<a href=\"". $filename . $getvar ."\" class=\"". $class ."\">". $tx ."</a>";
}


function make_sublinks($antalviste, $ialt, $getvar, $qstring="") {

if(!empty($qstring)) {
$qlink = $qstring ."&". $getvar ."=";
}else{
$qlink = "?". $getvar ."=";
}

if($ialt > $antalviste) {
    if(!isset($_GET[$getvar]) || !is_numeric($_GET[$getvar]) || $_GET[$getvar] < 0) {
    $back = "&nbsp;";
    $next = link($qlink . $antalviste, "frem") ." &nbsp; ". link($qlink . ($ialt-$antalviste), ">>");
    $info = "1 - ". $antalviste ." af ". $ialt ." mulige";
    }else{
    $info = ($_GET[$getvar]+1) ." - ". ($_GET[$getvar]+$antalviste) ." af ". $ialt ." mulige";

        if($_GET[$getvar] <= $antalviste) {
        $linket = $qstring;
        }elseif($_GET[$getvar] >= $ialt) {
        $linket = $qlink . ($ialt-$antalviste);
        }else{
        $linket = $qlink . ($_GET[$getvar]-$antalviste);
        }
        $back = link($qstring, "<<") ." &nbsp; ". link($linket, "tilbage");

        if(($_GET[$getvar]+$antalviste) >= $ialt) {
        $next = "&nbsp;";
        $info = ($_GET[$getvar]+1) ." - ". $ialt ." af ". $ialt ." mulige";
        }else{
        $next = link($qlink . ($_GET[$getvar]+$antalviste), "frem");
            if($_GET[$getvar] < ($ialt-$antalviste)) {
            $next = $next ." &nbsp; ". link($qlink . ($ialt-$antalviste), ">>");
            }
        }
    }

echo"<table width=\"400\" border=\"0\" align=\"center\"><tr>\n";
echo"    <td width=\"33%\" class=\"small\">". $back ."</td>\n";
echo"    <td width=\"34%\" class=\"small\" align=\"center\">". $info ."</td>\n";
echo"    <td width=\"33%\" class=\"small\" align=\"right\">". $next ."</td>\n";
echo"</tr></table>";
    }
}


Og for at bruge den:

if(!isset($_GET["sort"])) { // $_GET["sort"] kan jo skiftes ud med den $_GET du vil
make_sublinks($pr_side, $antal, "vis"); // vis er den $_GET som bestemmer hvilke som skal vises
}else{
make_sublinks($pr_side, $antal, "vis", "?sort=". $_GET["sort"]);
}

$antal er først en query, som henter antal links som er mulige, og derefter
$antal = mysql_num_rows($query);

$pr_side = 10;
Avatar billede sukos Juniormester
18. april 2004 - 21:25 #25
En "demo" som netop IKKE virker hvis du også har en $_GET i forvejen, kan ses her:
http://www.showsource.dk/brugernavne.php

(+ der er lidt mere på siden som heller ikke helt virker! :O] )
Avatar billede downloadcentral.dk Nybegynder
18. april 2004 - 21:27 #26
Ok cool ;) Hvad skal jeg erstatte i den kode du skrev?
Avatar billede sukos Juniormester
18. april 2004 - 22:31 #27
æhh,,,,,

$pr_side = 10; // Angives jo længere jo oppe, og bruges i en anden query

$alle = @mysql_query("SELECT `tid` FROM `sh_brugere`  WHERE `tid` != 'NULL' AND `aktiv` = 1") or die (mysql_error()); // Find brugernavne som skal listes
$antal = mysql_num_rows($alle); // Ialt antal til visning
mysql_free_result($alle);

if(!isset($_GET["sort"])) { // $_GET["sort"] kan jo skiftes ud med den $_GET du vil
make_sublinks($pr_side, $antal, "vis"); // "vis" er den $_GET som bestemmer hvilke som skal vises, fil.php?vis=10 ..... vis de næste ti, (10 - 20)
}else{
make_sublinks($pr_side, $antal, "vis", "?sort=". $_GET["sort"]);
}

hmm, ved ikke lige, men prøv dig frem.
Så er det nemmere at komme med hjælp hvis du har et specifikt problem! :O)
Avatar billede sukos Juniormester
18. april 2004 - 22:32 #28
$antal = mysql_num_rows($alle); // Ialt antal til visning

===

$antal = mysql_num_rows($alle); // Ialt antal som kan vises
Avatar billede sukos Juniormester
18. april 2004 - 22:36 #29
Og her er lidt du kan lege videre med! :O)
http://eksperten.dk/spm/408077
Avatar billede downloadcentral.dk Nybegynder
18. april 2004 - 22:38 #30
Ok, tak, jeg prøver hurtigst muligt.
Avatar billede dennismp Nybegynder
18. april 2004 - 22:41 #31
download: Men er der her taget højde for de forskellige categorier osv?

Det er bare et spørgsmål om at putte den rigtige sql ind.
Avatar billede sukos Juniormester
18. april 2004 - 22:42 #32
function make_sublinks($antalviste, $ialt, $getvar, $qstring="") {
// $antalviste == $pr_side , $ialt == $antal $getvar == "vis" $qstring == en evt. $_GET

if(!empty($qstring)) { // ?sort=". $_GET["sort"]
$qlink = $qstring ."&". $getvar ."=";
}else{
$qlink = "?". $getvar ."="; // ?vis=
}
Avatar billede sukos Juniormester
18. april 2004 - 22:44 #33
I mit eks. er det et spm om en get er sat, og så bruge den. Hvad den get hedder, ja, det er "manuelt" arbejde! :O)
Avatar billede dennismp Nybegynder
18. april 2004 - 22:46 #34
ah, nu vågnede sukos også :-) Jeg tror jeg giver op :-)

offtopic: btw: sukos - jeg har på fornemmelsen at du er bagmand bag showsource.dk? Er det rigtigt gættet?
Avatar billede sukos Juniormester
18. april 2004 - 22:46 #35
4 mdr. side njeg lavede den, og har ikke kikket på den siden! :O)
Avatar billede sukos Juniormester
18. april 2004 - 22:47 #36
Jow, dennismp!
Men lang tid siden jeg har gjordt noget mere ud af den!
Avatar billede sukos Juniormester
19. april 2004 - 06:16 #37
Du kan forresten prøve det af så'n her:

<?php
$kat = array("php", "webserver", "apache");

$pr_side = 10;
$antal = 34;


function link($getvar, $tx, $filnavn="", $class="") {
if(empty($filnavn)) {
$filename = $_SERVER["PHP_SELF"];
}else{
$filename = $filnavn;
}
return "<a href=\"". $filename . $getvar ."\" class=\"". $class ."\">". $tx ."</a>";
}


function make_sublinks($antalviste, $ialt, $getvar, $qstring="") {

if(!empty($qstring)) {
$qlink = $qstring ."&". $getvar ."=";
}else{
$qlink = "?". $getvar ."=";
}

if($ialt > $antalviste) {
    if(!isset($_GET[$getvar]) || !is_numeric($_GET[$getvar]) || $_GET[$getvar] < 0) {
    $back = "&nbsp;";
    $next = link($qlink . $antalviste, "frem") ." &nbsp; ". link($qlink . ($ialt-$antalviste), ">>");
    $info = "1 - ". $antalviste ." af ". $ialt ." mulige";
    }else{
    $info = ($_GET[$getvar]+1) ." - ". ($_GET[$getvar]+$antalviste) ." af ". $ialt ." mulige";

        if($_GET[$getvar] <= $antalviste) {
        $linket = $qstring;
        }elseif($_GET[$getvar] >= $ialt) {
        $linket = $qlink . ($ialt-$antalviste);
        }else{
        $linket = $qlink . ($_GET[$getvar]-$antalviste);
        }
        $back = link($qstring, "<<") ." &nbsp; ". link($linket, "tilbage");

        if(($_GET[$getvar]+$antalviste) >= $ialt) {
        $next = "&nbsp;";
        $info = ($_GET[$getvar]+1) ." - ". $ialt ." af ". $ialt ." mulige";
        }else{
        $next = link($qlink . ($_GET[$getvar]+$antalviste), "frem");
            if($_GET[$getvar] < ($ialt-$antalviste)) {
            $next = $next ." &nbsp; ". link($qlink . ($ialt-$antalviste), ">>");
            }
        }
    }

echo"<table width=\"400\" border=\"0\" align=\"center\"><tr>\n";
echo"    <td width=\"33%\" class=\"small\">". $back ."</td>\n";
echo"    <td width=\"34%\" class=\"small\" align=\"center\">". $info ."</td>\n";
echo"    <td width=\"33%\" class=\"small\" align=\"right\">". $next ."</td>\n";
echo"</tr></table>";
    }
}

echo"<table><tr>\n";
echo"    <th> |";
foreach($kat as $link) {
echo" <a href=\"". $_SERVER["PHP_SELF"] ."?kat=". $link ."\">". $link ."</a> |";
}
echo"</th>\n";
echo"</tr><tr>\n";
echo"    <th>";
if(isset($_GET["kat"])) {
echo $_GET["kat"];
}else{
echo"Vælg kategori";
}
echo"</th>\n";
echo"</tr><tr>\n";
echo"    <td>";

if(!isset($_GET["kat"])) {
make_sublinks($pr_side, $antal, "vis");
}else{
make_sublinks($pr_side, $antal, "vis", "?kat=". $_GET["kat"]);
}

echo"</td></tr></table>";
?>
Avatar billede downloadcentral.dk Nybegynder
19. april 2004 - 10:28 #38
Det re utroligt nok stadig lidt sort for mig. Skal jeg ændre variablen _get til $fileid, eller hvad er det jeg skal ændre til hvad?
Avatar billede sukos Juniormester
29. april 2004 - 16:59 #39
æhh, $fileid, er det din $_GET["var"] ???

if(!isset($_GET[$fileid])) {
make_sublinks($pr_side, $antal, "vis");
}else{
make_sublinks($pr_side, $antal, "vis", "?kat=". $fileid);
}
Avatar billede downloadcentral.dk Nybegynder
29. april 2004 - 17:56 #40
Jamen jeg ved det ikke?!
Avatar billede downloadcentral.dk Nybegynder
19. maj 2004 - 15:08 #41
Ingen kunne hjælpe mig til en paging der virkede.. :(
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