webForumDet fria alternativet

simpel paging

7 svar · 455 visningar · startad av Smultron

SmultronMedlem sedan juli 2002431 inlägg
#1

finns det inget enkelt sätt att göra en paging funktion på?

Web-TorMedlem sedan nov. 200011 794 inlägg
#2

Har du kollat på dom pagin-script som finns här på wF?

PellefantMedlem sedan maj 20022 614 inlägg
#3

Denna är väldigt bra, svensk text också. :)

http://www.webforum.nu/showthread.php?s=&postid=616502#post616502

Alpha IIMedlem sedan maj 20002 579 inlägg
#4
<?
$per_page = 10;

function PrintTable()
{
$query = mysql_query("SELECT * FROM table ORDER BY date desc LIMIT $page, $per_page");

while ($a=mysql_fetch_array($query))
{
         // skriv ut de olika posterna
}

}

function PrintPageNav()
{
$total = mysql_num_rows(mysql_query("SELECT * FROM table"));
$total_pages = floor($total / $per_page);

for($i=0;$i<$total_pages;$++)
{
       echo "<a href='page.php?page=$i'>" . $i+1 . "</a> ";
}

}

?>

Väldigt enkelt men borde funka, har dock inte testat :)

QimenMedlem sedan juni 20013 568 inlägg
#5

Detta är det script som webForum använder och även jag använder det på många av mina sidor. Mycket bra script.

<?php 
      
$link = mysql_pconnect("localhost","användarnamn","lösenord") or die ("Kan inte ansluta till databasen!");
mysql_select_db("databas_namn", $link);

// *** funktion för att loopa ut och presentera data ***
function presentData($results) {

    if ( mysql_num_rows( $results ) < 1 ) {
    
        print ("<p><b>Hittade inget i db:n</b></p>\n\n");    
    }
    else {

        while ($result = mysql_fetch_array($results)) { 

            $namn = $result['namn'];

            print "$namn<br>";
            	    
        } // end loop

    } // end if-clause

} // end function

// *** funktion för att hämta data från databasen ***
function getDbData( $from_records, $max_per_page ) {

    $strSQL = "SELECT * FROM tabell ORDER BY id DESC LIMIT $from_records, $max_per_page";
    $results = mysql_query( $strSQL ) or die( mysql_error() );
    return $results;
}

// *** funktion för uträkning till sidutskriften ***
function getFromRecords( $max_per_page, $page_num ) {

    $from_records = ( $max_per_page * ( $page_num - 1 ) ); 
    return $from_records;

}

// *** function för att räkna antal poster som hämtas ***
function countAllRecords() {

    $result_records = mysql_query("SELECT COUNT(*) AS rows FROM tabell"); 
    $num_records = mysql_result($result_records, 0, "rows"); 
    mysql_free_result($result_records);
    return $num_records;

}

// *** funktion för att definiera övre delen av tabelllayouten ***
function setTableStart( $page_num, $total_pages ) {

    $tbl_start = "<table width=\"300\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\"> 
            <tr> 
            <td align=\"Left\">Sida <b>$page_num</b> av <b>$total_pages</b></td> 
            </tr> 
            <tr> 
            <td align=\"right\">"; 

    return $tbl_start;

}

// *** funktion för att definiera nedre delen av tabelllayouten ***
function setTableEnd() {
    
    $tbl_end = "</td></tr></table>\n";
    return $tbl_end;

}

// *** funktion för att definiera tillbaka-länkens utseende ***
function setPrevLink( $page_num, $selfSide ) {  

    if ( $page_num > 1 ) { 
        $prev_page = $page_num - 1; 
        $prev_link = "<a href=index.php?p=ideer&page=$prev_page title=\"F&ouml;reg&aring;ende sida\">&lt;</a>&nbsp;&nbsp;"; 
    }

    return $prev_link;

}

// *** funktion för att definiera nästa-länkens utseende ***
function setNextLink( $page_num, $selfSide, $total_pages ) {  
    
    if ( $page_num < $total_pages ) { 
        $next_page = $page_num + 1; 
        $next_link = "&nbsp;<a href=index.php?p=ideer&page=$next_page title=\"N&auml;sta sida\">&gt;</a>"; 
    } 
    return $next_link;
}

// *** funktion för att definiera sidnummer samt länk till första och sista sidan ***
function setNavigation( $total_pages, $page_num, $max_page_num ) {  

    while ( $cur_page++ < $total_pages ) {
    
        if ( ( $cur_page <= $page_num - $max_page_num || $cur_page >= $page_num + $max_page_num ) && $max_page_num != 0 ) {
	
            if ( $cur_page == 1 ) {
	    
                $first_link = "<a href=index.php?p=ideer&page=$cur_page title=\"F&ouml;rsta sidan\">&lt;&lt;</a>&nbsp;&nbsp;"; 
            } 
	    
            if ( $cur_page == $total_pages ) {
	    
                $last_link = "&nbsp;&nbsp;<a href=index.php?p=ideer&page=$cur_page title=\"Sista sidan\">&gt;&gt;</a>"; 
            } 

        } else { 
	
            if ( $cur_page == $page_num ) { 
	    
                $pages .= "<b>$cur_page</b>&nbsp;";
		
            } 
	    
	    else { 

                $pages .= "<a href=index.php?p=ideer&page=$cur_page title=\"Sida $cur_page\">$cur_page</a>&nbsp;"; 
            } 
        } 
    } 

    $navigation[0] = $first_link;
    $navigation[1] = $last_link;
    $navigation[2] = $pages;

    return $navigation;

}

$max_per_page = 14; // Antal poster att visa per sida 
$max_page_num = 7; // Antal valbara sidor från aktuell sida
$selfSide = $_SERVER[PHP_SELF]; // Hämtar aktuellt sidnamn från adressraden

    if ( !isset( $_GET['page'] ) ) { 
        $page_num = 1; 
    } 
    else { 
        $page_num = $_GET['page']; 
    } 

$num_records = countAllRecords();

$total_pages = ceil( $num_records / $max_per_page ); 

$from_records = getFromRecords( $max_per_page, $page_num );

$results = getDbData( $from_records, $max_per_page );

if ( $num_records > $max_per_page ) {

    $tbl_start = setTableStart( $page_num, $total_pages );

    $prev_link = setPrevLink( $page_num, $selfSide );

    $next_link = setNextLink( $page_num, $selfSide, $total_pages );

    $navigation = setNavigation( $total_pages, $page_num, $max_page_num );
    
    $first_link = $navigation[0];
    $last_link = $navigation[1];
    $pages = $navigation[2];

    $tbl_end = setTableEnd();
    
} // avslutar if-sats

print ("$tbl_start$first_link$prev_link$pages$next_link$last_link$tbl_end"); 

presentData($results);

?>

:)

pakmannenMedlem sedan dec. 2002226 inlägg
#6

Qimen: Verkar vara ett bra script. Men jag får följande fel:

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /export/vol1/unix/c/cvalda/public_html/ingmars/guestbook.php on line 59

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /export/vol1/unix/c/cvalda/public_html/ingmars/guestbook.php on line 60

Dessa rader:
$num_records = mysql_result($result_records, 0, "rows");
mysql_free_result($result_records);

QimenMedlem sedan juni 20013 568 inlägg
#7

Har du ställt in dina uppgifter till databasen rätt?
Har fyllt i och ställt in sql satserna så att de stämmer överens med din databas? :)

pakmannenMedlem sedan dec. 2002226 inlägg
#8

Japp, men jag tror jag löste det med ett annat paging script. Som jag dessutom fattade.. :)

Genererad på 385 ms · cache AV · v20260730165559-full.f96bc7eb