2016-06-15 109 views
-1

我覺得我問了很多問題。PHP分頁不工作,我不知道爲什麼

不管怎樣,我正在寫一些數據庫條目分頁,它看起來聲音給我,但是當我點擊鏈接它只是顯示前10個職位,並沒有別的。

整個事情就在這裏:

 <?php 
      $post_limit = 10; 

      $conn = new mysqli($servername, $username, $password, $dbname); 
      if ($conn->connect_error) { 
       die("failed to connect: " . $conn->connect_error); 
      } 

      $sql = "SELECT count(id) FROM $tablename"; 
      $result = mysqli_query($conn, $sql); 

      if (!$result) { 
       echo "you fucked up"; 
      } else { 
       echo $row["id"]; 
      } 

      $row = mysqli_fetch_array($result, MYSQL_NUM); 
      $post_count = $row[0]; 

      if(isset($_GET['page'])) { 
       $page = $_GET['page'] + 1; 
       $offset = $post_limit * $page; 
      } else { 
       $page = 0; 
       $offset = 0; 
      } 

      $post_left = $post_count - ($page * $post_limit); 

      $sql = "SELECT id, upvotes, downvotes, name, title, message, date, time FROM posts ORDER BY date DESC, time DESC LIMIT $offset, $post_limit"; 
      $result = $conn->query($sql); 

      if ($result->num_rows > 0) { 
       while($row = $result->fetch_assoc()) { 
        echo "<br><div id='messageBar'>"; 
        echo " &#10070; </b>"; 
        echo "Posted by <b>"; 
        echo htmlspecialchars($row["name"]); 
        echo "</b> on "; 
        echo $row["date"]; 
        echo " at "; 
        echo $row["time"]; 
        if (!empty($row['title'])) { 
         echo " - <b>"; 
         echo htmlspecialchars($row["title"]); 
         echo "</b>"; 
        } 
        echo "<span style='float: right'>#"; 
        echo $row["id"]; 
        echo "</span>"; 
        echo "</div><div id='messageContent'>"; 
        echo htmlspecialchars($row["message"]); 
        echo "<br><br><span id='commentLink'><a class='commentLink' href='thread.php?id=$row[id]'>view thread&nbsp;</a></span>"; 
        echo "<br></div><br><hr>"; 
       } 
      } else { 
       echo "<br>"; 
       echo "<center><i>it's dusty in here</i></center>"; 
       echo "<br>"; 
      } 

      if ($page > 0) { 
       $last = $page - 2; 
       echo "<a href='$_PHP_SELF?page = $last'>previous page</a> | "; 
       echo "<a href='$_PHP_SELF?page = $page'>next page</a>"; 
      } else if ($page == 0) { 
       echo "<a href='$_PHP_SELF?page = $page'>next page</a>"; 
      } else if ($post_left < $post_limit) { 
       $last = $page - 2; 
       echo "<a href='$_PHP_SELF?page = $last'>previous page</a>"; 
      } 

      $conn->close(); 
     ?> 

的鏈接,下一個頁面出現在底部,但點擊它把你帶到你已經在用相同的最近10個帖子的頁面。

我想學習PHP的,因爲我去,所以我感謝所有幫助。謝謝!

+0

正確的語法是'$ _GET [ '頁']','不是$ _GET { '頁面'}'。 – aynber

+0

謝謝,修正了這種語法,但問題仍然存在。 – Treedot

+0

這是我經常提醒我編程時很糟糕 – Treedot

回答

0

而不是使用$_GET請使用$_SESSION管理計數器。 每次你進入這個頁面,你都會增加計數器。

所以,你必須做這個頁面的頂部:

if(isset($_SESSION['counter'])) { 
      $page = $_SESSION['counter'] + 1; 
      $offset = $post_limit * $page; 
     } else { 
      $page = 0; 
      $offset = 0; 
      $_SESSION['counter']=0; 
     } 

試試這個。 順便說一句,有Datatables哪些做你正在尋找。

P.S.如果您沒有在代碼中的其他位置開始會話,請將session_start();放在第一頁(例如,login.php)中,否則請放在此頁面上。

+0

剛剛試過這個,沒有任何東西看起來改變了。 – Treedot

0

固定。問題在這裏:

if ($page > 0) { 
      $last = $page - 2; 
      echo "<a href='$_PHP_SELF?page = $last'>previous page</a> | "; 
      echo "<a href='$_PHP_SELF?page = $page'>next page</a>"; 
     } else if ($page == 0) { 
      echo "<a href='$_PHP_SELF?page = $page'>next page</a>"; 
     } else if ($post_left < $post_limit) { 
      $last = $page - 2; 
      echo "<a href='$_PHP_SELF?page = $last'>previous page</a>"; 
     } 

我連接到的URL不應該在=符號周圍有空格。它仍然是越野車,但它的工作原理。

相關問題