finns det inget enkelt sätt att göra en paging funktion på?
simpel paging
7 svar · 455 visningar · startad av Smultron
Har du kollat på dom pagin-script som finns här på wF?
Denna är väldigt bra, svensk text också. :)
http://www.webforum.nu/showthread.php?s=&postid=616502#post616502
<?
$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 :)
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öregående sida\"><</a> ";
}
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 = " <a href=index.php?p=ideer&page=$next_page title=\"Nästa sida\">></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örsta sidan\"><<</a> ";
}
if ( $cur_page == $total_pages ) {
$last_link = " <a href=index.php?p=ideer&page=$cur_page title=\"Sista sidan\">>></a>";
}
} else {
if ( $cur_page == $page_num ) {
$pages .= "<b>$cur_page</b> ";
}
else {
$pages .= "<a href=index.php?p=ideer&page=$cur_page title=\"Sida $cur_page\">$cur_page</a> ";
}
}
}
$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);
?>
:)
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);
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? :)
Japp, men jag tror jag löste det med ett annat paging script. Som jag dessutom fattade.. :)