[英]Pagination in php for a social networking system
我正在开发一个简单的社交网络系统。 这是我的代码,它显示登录用户的所有朋友的列表,每个用户名的前面都有一个“取消朋友”按钮。 我需要一个页面,一次只能显示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);
?>
您可以通过limit语句来完成。 您需要设置一些变量,例如:
您的查询需要基于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/zh/zend.paginator.html
如果您不想使用此类,请查看本教程: http : //www.phpjabbers.com/php--mysql-select-data-and-split-on-pages-php25.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.