0

我正在开发一个简单的社交网络系统。这是我的代码,它显示了登录用户的所有朋友的列表,每个人的名字前面都有一个 Unfriend 按钮。我需要一个一次只显示 5 个朋友的页面。在页面底部带有下一个和上一个链接。加载的第一页不应该有“上一个”链接,最后一页不应该有“下一个”链接。任何帮助,将不胜感激。

<?php
require_once("settings.php");   
$conn = @mysqli_connect($host,$user,$pswd) or die('Failed to connect to server');//connecting to the database
@mysqli_select_db($conn,$dbnm) or die('Database not available');//unless error
//if ((isset($_POST ["$log "]) && (!empty ($log)))){
//getting profile names and ids of the friends of the logged in user 
$query = "SELECT friends.profile_name,friends.friend_id FROM friends INNER JOIN myfriends ON friends.friend_id=myfriends.friend_id1
            WHERE myfriends.friend_id2='$friendID'";

//unless error
$results = @mysqli_query($conn, $query) or die("<p>Unable to execute the query 011.</p>". "<p>Error code " . mysqli_errno($conn). ": " . mysqli_error($conn)) . "</p>";;
$count=mysqli_num_rows($results);//row count
$row = mysqli_fetch_row($results);//fetching a row from db and soring it inside a variable

if(isset($_GET ["unfriend"]))//if unfriend variable is set
{

    $unfriend=$_GET["unfriend"];
    //echo $friend_id = $row[1];
    //$query ="DELETE FROM myfriends WHERE (friend_id1=".$unfriend." and friend_id2=".$friendID.") OR (friend_id1=".$friendID." and friend_id2=".$unfriend.")";
    //deleting the mutual friendship 
    $query ="DELETE FROM myfriends WHERE (friend_id1=$unfriend and friend_id2=$friendID) OR (friend_id1=$friendID and friend_id2=$unfriend)";
    $results = @mysqli_query($conn, $query) or die("<p>Unable to execute the query 011.</p>". "<p>Error code " . mysqli_errno($conn). ": " . mysqli_error($conn)) . "</p>";;

    //getting num of friends of the deleted friend 
    $query = "SELECT num_of_friends FROM friends WHERE friend_id='$unfriend'";

    $results = @mysqli_query($conn, $query) or die("<p>Unable to execute the query 013.</p>". "<p>Error code " . mysqli_errno($conn). ": " . mysqli_error($conn)) . "</p>";;

    $row = mysqli_fetch_row($results);
    $friendcount=$row[0];
     $friendcount--;
     //updating the number of friends of the deleted friend
    $query2 ="UPDATE friends  
            SET num_of_friends='$friendcount'
            WHERE friend_id='$unfriend'";
    $results2= @mysqli_query($conn, $query2) or die("<p>Unable to execute the query 01234.</p>". "<p>Error code " . mysqli_errno($conn). ": " . mysqli_error($conn)) . "</p>";;

    //getting profile names and ids of the friends of the logged in user 
    $query = "SELECT friends.profile_name,friends.friend_id,friends.num_of_friends FROM friends INNER JOIN myfriends ON friends.friend_id=myfriends.friend_id1
            WHERE myfriends.friend_id2='$friendID'";

    $results = @mysqli_query($conn, $query) or die("<p>Unable to execute the query 013.</p>". "<p>Error code " . mysqli_errno($conn). ": " . mysqli_error($conn)) . "</p>";;
    $count=mysqli_num_rows($results);

    //updating the number of friends of the logged in user.
    $query1 ="UPDATE friends   
            SET num_of_friends='$count'
            WHERE friend_id='$friendID'";
    $results1= @mysqli_query($conn, $query1) or die("<p>Unable to execute the query 012.</p>". "<p>Error code " . mysqli_errno($conn). ": " . mysqli_error($conn)) . "</p>";;       
    //updating the session variable
    $numoffriends=$count;
    $_SESSION["numoffriends"]=$numoffriends;    

    $row = mysqli_fetch_row($results);


}


    echo "<p>Total Number of friends is $count</p>";

echo "<table width='50%' border='1'>";
while ($row) {
    echo "<tr><td>{$row[0]}</td>";
    ?>
    <td><button onclick = "window.location.href='friendlist.php?unfriend=<?php echo $row[1];?>'">Unfriend</button></td></tr>
    <?php

    $row = mysqli_fetch_row($results);
}
echo "</table>";



echo"<p><a href =\"friendadd.php\">Add Friends</a><a href =\"logout.php\">Log Out</a></p>"; 



mysqli_free_result($results);


mysqli_close($conn);
?>
4

1 回答 1

1

你可以通过limit语句来做到这一点。您需要设置一些变量,例如:

  • $records_per_page - 负责显示记录的变量
  • $current_page - 保存当前页面的变量

您的查询需要基于LIMIT x, y

x - 要跳过多少条记录 y - 显示多少条记录

因此,如果有人将 1 作为当前页面,它将类似于

LIMIT $current_page * $records_per_page, $records_per_page;

此外,您应该无限制地计算查询中有多少记录,这样您就可以使用 for 循环来创建页面链接。

其他好的选择是为此使用适当的已经编写的类。我使用的最好的类是Zend_Paginator

http://framework.zend.com/manual/1.12/en/zend.paginator.html

如果您不想使用此类,请查看本教程:http ://www.phpjabbers.com/php--mysql-select-data-and-split-on-pages-php25.html

于 2013-05-18T09:51:36.613 回答