webForumDet fria alternativet
Logga in / Bli medlem

paging vidareutveckling

PHP

4 svar · 300 visningar · startad av LAMP

Medlem sedan mars 2002777 inlägg
Trådstart#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 ();

?>
Medlem 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. :)

Medlem 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?

Medlem 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. ;)

Medlem 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

440 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
314 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)