webForumDet fria alternativet

paging vidareutveckling

4 svar · 300 visningar · startad av LAMP

LAMPMedlem sedan mars 2002777 inlägg
#1

Hej, jag har en paging som ser ut enligt nedan. Problemet är att det blir en hel massa sidor som listas i navigeringen. Kan man göra så att den bara visar 10 sidor i taget, sedan när man är på t ex sida 10 så listar den de 10 nästkommande sidorna?

// *** inkludera ett connectionobjekt ***
   require("connection.php");

   if(!$PageCounter)
   $PageCounter = 0;
      
//  *** sätt antal poster per sida till önskat värde ***
   $intPageSize = 15;
// *** räkna ut aktuell sida ***
   $PageNow = $Page * $intPageSize;
// *** räkna antal poster med funktionen count() ***
   $strSQL = mysql_query("SELECT COUNT(*) AS intTotal FROM Forums_topics WHERE intForumId = $forumid");

   if(mysql_numrows($strSQL) > 0)

// *** definiera och tilldela intTotalRecords antalet poster totalt
   $intTotalRecords = mysql_result($strSQL,0,"intTotal");
// *** beräkna hur många sidor det blir ***
   $HowManyPages = $intTotalRecords / $intPageSize;
// *** avrunda antalet sidor ***
   $HowManyPages = Ceil($HowManyPages);
// *** tilldela whichpage ett värde ***
    $WichPage = $Page + 1;
		
// *** Gör en select och loopa ut alla trådar ***
   $strSQL = "SELECT intThreadId, intForumId, intMemberId, dteDate, strSubject, intThreadMessId, intLocked, intFlyttad  
      FROM Forums_topics WHERE intForumId = $forumid ORDER BY dteDate ASC LIMIT $PageNow,$intPageSize";

   $Result = mysql_query( $strSQL )
      or die( mysql_error() );

   if( mysql_num_rows( $Result ) < 1 ) 

   {
      print <p><b>Det fanns inga inlägg i detta forum</b></p>\n\n");      

   }

   else {
    
   while ($data = mysql_fetch_array($Result)) {

// *** definiera variabler som ska användas ***
   $threadMessId = (int) $data["intThreadMessId"];
   $memberId = (int) $data["intMemberId"];
   $subject = $data["strSubject"];
   $locked = (int) $data["intLocked"];
   $moved = (int) $data["intFlyttad"];
   $dteDate = $data["dteDate"];

   print ("<a href=\"viewmess.php?threadId=$threadMessId\">$subject</a>\n\n");

// *** Hämta ut vem som startade tråden ***
   $sql = "SELECT intMemberId, Username, AnvId 
   FROM Forums_topics 
   INNER JOIN Profil
   ON intMemberId = AnvId
   WHERE intMemberId = $memberId ";

   $Resultat = mysql_query( $sql )
      or die( mysql_error() );

   if( mysql_num_rows( $Resultat ) < 1 ) 

{

   print <p><b>Hittade ingen trådskapare</b></p>\n\n");      
}

   else {

// *** presenterar en massa dynga här ***

// *** presentera aktuell sida, hur många sidor totalt och antal poster totalt ***
   if($Page >= 0) {

   print ("Sidor totalt: $HowManyPages &nbsp;&nbsp;&nbsp;");

// *** skriv ut föregåendelänk ***
   if($Page == 0) {

   print ("&nbsp;");  
}
   else {

   $prevPage = $Page - 1;
   print (" <a href=\"threadlist.php?forumid=$forumid&Page=$prevPage\">Föregående</a> ");
}

// *** loopa ut sidnummer och skriv ut länk på alla utom på aktuell sida ***
	
   for($i=1; $i < $HowManyPages + 1; $i++) {
      $intCounter = $i - 1;
	    
   if($WichPage == $i)
	       
      print ("<b>[$i]</b>");
	    
   else
	       
      print (" <a href=\"threadlist.php?forumid=$forumid&Page=$intCounter\">$i</a> ");

	}

// *** Skriv ut nästalänk ***
   if($Page == ($HowManyPages - 1)) {

   print ("&nbsp;");
}

   else {

   $NextPage = $Page + 1;
   print (" <a href=\"threadlist.php?forumid=$forumid&Page=$NextPage\">Nästa</a> ");
}
}

mysql_close ();

?>
SPiNMedlem sedan mars 20007 896 inlägg
#2

Testa att byta ut följande:

for($i=1; $i < $HowManyPages + 1; $i++) {
     $intCounter = $i - 1;

     if($WichPage == $i)
          print ("<b>[$i]</b>");
     else
          print (" <a href=\"threadlist.php?forumid=$forumid&Page=$intCounter\">$i</a> ");
}

Mot:

for($i=1; $i < ( $HowManyPages + 1 ) || $i < 11; $i++) {
     $intCounter = $i - 1;

     if($WichPage == $i)
          print ("<b>[$i]</b>");
     else
          print (" <a href=\"threadlist.php?forumid=$forumid&Page=$intCounter\">$i</a> ");
}

Med reservering för att jag har förstått din kod fel. :)

LAMPMedlem sedan mars 2002777 inlägg
#3

Men vad händer då om där är t ex 50 sidor. Då fungerar det väl bara upp till 20, eller?

SPiNMedlem sedan mars 20007 896 inlägg
#4

Ah, jag missförstod din fråga. :r
Jag trodde att du bara ville visa länkar från sida 1 till sida 10. Jag orkar tyvärr inte tänka så ingående just nu, jag har precis kommit hem från jobbet och öppnat en Jahki - så jag sitter mest och njuter. ;)

LAMPMedlem sedan mars 2002777 inlägg
#5

Hittade lite exempel här hur man kan gå tillväga. Ska nu bygga om och förbättra dessa så de passar mig. Om någon har samma beskymmer finns exempel och artiklar om ämnet här:

http://www.devarticles.com/content.php?articleId=110&page=1
http://codewalkers.com/seecode/42.html

264 ms totalt · 3 externa anrop · v20260731065814-full.30151723
129 ms — hämta forumlista (db)
134 ms — hämta statistik (db)
124 ms — hämta tråd, inlägg och bilagor (db)