2011-06-10 17 views
1

我有一個表顯示來自數據庫的結果,並且我正在爲它添加一些分頁/導航按鈕,比如'prev','next'等。這些都是現在構建的作爲提交輸入按鈕,使用表單標籤和一些隱藏輸入封裝,以將所需的查詢字符串值傳遞迴頁面本身,這意味着表單中的每個表單和元素都應具有ID屬性。重複的表單導航元素,HTML ID的

現在,我很想將導航添加到表格的頂部和底部,因此我將導航生成模塊化爲我需要時調用的單個例程。當包含多個導航欄時,這當然會導致頁面中的表單和元素ID重複。

我想過爲例程傳遞一些'count'參數,以便在生成HTML時它可以將該值附加到ID,還有其他解決方案,例如使用全局計數器(醜陋)等,但我想我會對人羣進行調查,看看其他人在這種情況下做了什麼。

感謝,

保羅

+0

當單擊該按鈕並將按鈕的表單作爲GET請求提交時,我是不是需要/需要使用該元素的ID來根據需要從元素中獲取值(來自存儲其他查詢字符串值的隱藏輸入,例如)? – 2011-06-10 15:47:54

回答

1

也許已經有一些混亂,似乎在什麼我一直在尋找,但簡而言之,使用可多次顯示基於表單的尋呼解決方案時,一個簡單的方法,以避免重複的ID問題在同一頁面上(例如,在表格數據上方和下方)。我的解決方案是在PHPMyAdmin分頁之後對它進行建模,因爲現在我只需刪除表單元素的ID並引用通過name屬性傳遞的數據,這允許重複。

1

你已經想到了迄今爲​​止的解決方案中,我建議你首先要提及的最後一段戰術。傳遞一個查詢字符串變量並加載X個記錄(包括傳遞的數字)(當然要進行錯誤檢查,以確保某個偷偷摸摸的用戶不會嘗試將隨機字符放入查詢字符串中)可以解決您的問題。

另一種選擇(因爲你顯然做的代碼隱藏加載從DB)是創建一個會話變量和值分配給被點擊的鏈接時,並用它來生成列表。

對於這兩個實例,當頁面加載時,可以傳遞當前值並添加X(顯示的結果中的行數+1),並更改鏈接傳遞的值。

+0

對不起,我的問題有點令人困惑......我並不是在詢問處理分頁的查詢字符串本身,而是詢問分頁導航將用於將這些值發送回頁面本身的HTML ID。 – 2011-06-10 16:07:26

+0

如果您只是擔心頁面導航的ID,則忽略頁面導航ID並關注鏈接的值。那會給你「頁面」去掉。 示例:鏈接的名稱可能爲「lnkDataPage2」,但頁碼顯示的值爲「2」。您可以使用該值而不是該ID。 – akuta 2011-06-10 16:18:45

+0

本人並不擔心,但如果我錯了,請糾正我:1)HTML要求元素ID對於給定頁面是唯一的,並且2)正確引用從表單傳遞的數據,我要去需要ID(不能單獨依賴名稱屬性,單選按鈕等)。考慮到這一點,並使用相同的導航形式顯示兩次,以編程方式生成,我如何忽略輸入元素ID並仍然生成HTML驗證? – 2011-06-10 17:17:39

1

我最近自己做了一個paginator,但以一種完全不同的方式接近它。我使用PHP來生成數字,每個數字(頁面)都有一個標籤,其href是mywebsite.php?page = x。這樣,您可以使用get方法,從url中獲取頁碼,並根據需要循環顯示頁數。

正如他們所說,有不止一種方法去皮膚貓。我更喜歡使用url傳遞方法,因爲我可以遠離表單和ID的全部內容,這樣一來,分頁器就可以到達我決定拍攝(無論多次)的位置。

下面是我如何生成它的快照。希望它給你一些想法!

/*PAGE NUMBERS*/ 
     // ceil rounds a decimal up to the next integer 
     $pages=ceil(($totalrows-1)/$tablesize); //we subtract 1 from total rows because it counts 0 
     //(int) typecasts the $pages variable, so that it is divisible by an integer (ceil makes it a float) 
     $pages=(int)$pages; 
     //displays all the pages with their links 

     //if page count is less than 7 (the full paginator), display all pages 
      if($pages<=7){ 
       for($i=1;$i<=$pages;$i++){ 
        print "<a class='pages"; 
        //add class current_page if necessary 
         if($page==$i){print " current_page";} 
        print "' href='index.php?page="; 
        print $i. "'>"." $i</a> "." "." ";  
       } 
      //if page count is more than 7 
      }else{ 
      //if page # is less than 4, display pages up to 7, so that there are always 7 pages available (makes the buttons not jump around)  
       if($page<=4){ 
       for($i=1;$i<=7;$i++){ 
        print "<a class='pages"; 
        //add class current_page if necessary 
         if($page==$i){print " current_page";} 
        print "' href='index.php?page="; 
        print $i. "'>"." $i</a> "." "." ";  
       } 
      //if page # is less than 4 away from the end, display pages $pages-7 
       }elseif($page>=$pages-3){ 
        for($i=$pages-6;$i<=$pages;$i++){ 
        //8,9,10,11,12,13,14,15 
         print "<a class='pages"; 
         //add class current_page if necessary 
          if($page==$i){print " current_page";} 
           print "' href='index.php?page="; 
           print $i. "'>"." $i</a> "." "." ";  
        } 
     //if it's in between the ends, do this   
       }else{       
        for($i=1;$i<$pages+1;$i++){ 
        //limit the number of visible pages to 7 
         if(($i>=$page-3)&&($i<=$page+3)){ 
         print "<a class='pages"; 
         //add class current_page if necessary 
          if($page==$i){print " current_page";} 
         print "' href='index.php?page="; 
         print $i. "'>"." $i</a> "." "." ";  
         } 
        } 
      } 
      } 
+0

有趣的解決方案samuel。出於我的目的,這不起作用,但有+1和它的書籤以備將來使用。 – 2011-06-12 23:59:11