最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442
当前位置:首页 > 编程开发 > php教程

PHP实例:构建基于PHP的微博客服务

日期:03-29    来源:中国设计秀    作者:cnwebshow.com

提示:在本文中,您学习了如何构建一个简单的基于 PHP 的微博客服务,该服务类似于 Twitter 和 Facebook 状态更新工具。如果一切顺利的话,您就可以得到现在这样的成果,并将它添加到您的应用程序中,并根据需要加以定制。UJQ中国设计秀

 UJQ中国设计秀

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
 UJQ中国设计秀

				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀

UJQ中国设计秀
 UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
 UJQ中国设计秀

				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀

UJQ中国设计秀
 UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀

UJQ中国设计秀
 UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀
 UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
 UJQ中国设计秀

				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀

UJQ中国设计秀
 UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
 UJQ中国设计秀

				UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
$following = following(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
___FCKpd___4
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?phpUJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
$id =

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
				UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
$following = following(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
___FCKpd___4
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
				UJQ中国设计秀
function check_count($first, $second){UJQ中国设计秀
$sql = "select count(*) from following UJQ中国设计秀
where user_id='$second' and follower_id='$first'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
$row = mysql_fetch_row($result);UJQ中国设计秀
return $row[0];UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
function follow_user($me,$them){UJQ中国设计秀
$count = check_count($me,$them);UJQ中国设计秀
UJQ中国设计秀
if ($count == 0){UJQ中国设计秀
$sql = "insert into following (user_id, follower_id) UJQ中国设计秀
values ($them,$me)";UJQ中国设计秀
UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
}UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
UJQ中国设计秀
function unfollow_user($me,$them){UJQ中国设计秀
$count = check_count($me,$them);UJQ中国设计秀
UJQ中国设计秀
if ($count != 0){UJQ中国设计秀
$sql = "delete from following UJQ中国设计秀
where user_id='$them' and follower_id='$me'UJQ中国设计秀
limit 1";UJQ中国设计秀
UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
}UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
				UJQ中国设计秀
function show_users($user_id=0){UJQ中国设计秀
UJQ中国设计秀
if ($user_id > 0){UJQ中国设计秀
$follow = array();UJQ中国设计秀
$fsql = "select user_id from followingUJQ中国设计秀
where follower_id='$user_id'";UJQ中国设计秀
$fresult = mysql_query($fsql);UJQ中国设计秀
UJQ中国设计秀
while($f = mysql_fetch_object($fresult)){UJQ中国设计秀
array_push($follow, $f->user_id);UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
if (count($follow)){UJQ中国设计秀
$id_string = implode(',', $follow);UJQ中国设计秀
$extra = " and id in ($id_string)";UJQ中国设计秀
UJQ中国设计秀
}else{UJQ中国设计秀
return array();UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users UJQ中国设计秀
where status='active' UJQ中国设计秀
$extra order by username";UJQ中国设计秀
UJQ中国设计秀
UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
				UJQ中国设计秀
<h2>Users you're following</h2>UJQ中国设计秀
UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
				UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
$following = following(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
___FCKpd___4
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?phpUJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
$id =

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
				UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
$following = following(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
___FCKpd___4
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
				UJQ中国设计秀
function check_count($first, $second){UJQ中国设计秀
$sql = "select count(*) from following UJQ中国设计秀
where user_id='$second' and follower_id='$first'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
$row = mysql_fetch_row($result);UJQ中国设计秀
return $row[0];UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
function follow_user($me,$them){UJQ中国设计秀
$count = check_count($me,$them);UJQ中国设计秀
UJQ中国设计秀
if ($count == 0){UJQ中国设计秀
$sql = "insert into following (user_id, follower_id) UJQ中国设计秀
values ($them,$me)";UJQ中国设计秀
UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
}UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
UJQ中国设计秀
function unfollow_user($me,$them){UJQ中国设计秀
$count = check_count($me,$them);UJQ中国设计秀
UJQ中国设计秀
if ($count != 0){UJQ中国设计秀
$sql = "delete from following UJQ中国设计秀
where user_id='$them' and follower_id='$me'UJQ中国设计秀
limit 1";UJQ中国设计秀
UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
}UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
				UJQ中国设计秀
function show_users($user_id=0){UJQ中国设计秀
UJQ中国设计秀
if ($user_id > 0){UJQ中国设计秀
$follow = array();UJQ中国设计秀
$fsql = "select user_id from followingUJQ中国设计秀
where follower_id='$user_id'";UJQ中国设计秀
$fresult = mysql_query($fsql);UJQ中国设计秀
UJQ中国设计秀
while($f = mysql_fetch_object($fresult)){UJQ中国设计秀
array_push($follow, $f->user_id);UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
if (count($follow)){UJQ中国设计秀
$id_string = implode(',', $follow);UJQ中国设计秀
$extra = " and id in ($id_string)";UJQ中国设计秀
UJQ中国设计秀
}else{UJQ中国设计秀
return array();UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users UJQ中国设计秀
where status='active' UJQ中国设计秀
$extra order by username";UJQ中国设计秀
UJQ中国设计秀
UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['userid']);UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value;UJQ中国设计秀
if (in_array($key,$following)){UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=unfollow'>unfollow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}else{UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=follow'>follow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}UJQ中国设计秀
echo "</td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
GET['id'];UJQ中国设计秀
$do =

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
				UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
$following = following(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
___FCKpd___4
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['userid']);UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value;UJQ中国设计秀
if (in_array($key,$following)){UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=unfollow'>unfollow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}else{UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=follow'>follow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}UJQ中国设计秀
echo "</td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
GET['do'];UJQ中国设计秀
UJQ中国设计秀
switch ($do){UJQ中国设计秀
case "follow":UJQ中国设计秀
follow_user(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
				UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
$following = following(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
___FCKpd___4
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['userid']);UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value;UJQ中国设计秀
if (in_array($key,$following)){UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=unfollow'>unfollow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}else{UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=follow'>follow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}UJQ中国设计秀
echo "</td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['userid'],$id);UJQ中国设计秀
$msg = "You have followed a user!";UJQ中国设计秀
break;UJQ中国设计秀
UJQ中国设计秀
case "unfollow":UJQ中国设计秀
unfollow_user(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
				UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
$following = following(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
___FCKpd___4
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['userid']);UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value;UJQ中国设计秀
if (in_array($key,$following)){UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=unfollow'>unfollow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}else{UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=follow'>follow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}UJQ中国设计秀
echo "</td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['userid'],$id);UJQ中国设计秀
$msg = "You have unfollowed a user!";UJQ中国设计秀
break;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
				UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
$following = following(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
___FCKpd___4
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['userid']);UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value;UJQ中国设计秀
if (in_array($key,$following)){UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=unfollow'>unfollow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}else{UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=follow'>follow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}UJQ中国设计秀
echo "</td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['message'] = $msg;UJQ中国设计秀
UJQ中国设计秀
header("Location:index.php");UJQ中国设计秀
?>UJQ中国设计秀
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['userid']);UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value;UJQ中国设计秀
if (in_array($key,$following)){UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=unfollow'>unfollow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}else{UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=follow'>follow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}UJQ中国设计秀
echo "</td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['userid']);UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<ul>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<li>".$value."</li>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</ul>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>You're not following anyone yet!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
SESSION['userid']);UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value;UJQ中国设计秀
if (in_array($key,$following)){UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=unfollow'>unfollow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}else{UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=follow'>follow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}UJQ中国设计秀
echo "</td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
GET['id'];UJQ中国设计秀
$do =

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
				UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
$following = following(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
___FCKpd___4
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['userid']);UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value;UJQ中国设计秀
if (in_array($key,$following)){UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=unfollow'>unfollow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}else{UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=follow'>follow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}UJQ中国设计秀
echo "</td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
GET['do'];UJQ中国设计秀
UJQ中国设计秀
switch ($do){UJQ中国设计秀
case "follow":UJQ中国设计秀
follow_user(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
				UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
$following = following(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
___FCKpd___4
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['userid']);UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value;UJQ中国设计秀
if (in_array($key,$following)){UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=unfollow'>unfollow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}else{UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=follow'>follow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}UJQ中国设计秀
echo "</td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['userid'],$id);UJQ中国设计秀
$msg = "You have followed a user!";UJQ中国设计秀
break;UJQ中国设计秀
UJQ中国设计秀
case "unfollow":UJQ中国设计秀
unfollow_user(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
				UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
$following = following(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
___FCKpd___4
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['userid']);UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value;UJQ中国设计秀
if (in_array($key,$following)){UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=unfollow'>unfollow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}else{UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=follow'>follow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}UJQ中国设计秀
echo "</td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['userid'],$id);UJQ中国设计秀
$msg = "You have unfollowed a user!";UJQ中国设计秀
break;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
				UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
$following = following(

追随其他用户UJQ中国设计秀

接下来可以将更多东西添加到 functions.php 文件中。这里需要一个 show_users() 函数,该函数可以返回系统中所有用户的一个列表。后面将使用这个函数填充一个用户列表。UJQ中国设计秀

UJQ中国设计秀
清单 10. show_users() 函数UJQ中国设计秀
				UJQ中国设计秀
function show_users(){UJQ中国设计秀
$users = array();UJQ中国设计秀
$sql = "select id, username from users where status='active' order by username";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while ($data = mysql_fetch_object($result)){UJQ中国设计秀
$users[$data->id] = $data->username;UJQ中国设计秀
}UJQ中国设计秀
return $users;UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

有了 show_users() 函数之后,接下来可以创建一个 users.php 文件,该文件将运行这个函数,并显示系统中所有用户的一个列表,对于每个用户,在用户名的旁边都有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
清单 11. 运行 show_users() 函数的 users.php 文件UJQ中国设计秀
				UJQ中国设计秀
<?php UJQ中国设计秀
session_start();UJQ中国设计秀
include_once("header.php");UJQ中国设计秀
include_once("functions.php");UJQ中国设计秀
UJQ中国设计秀
?>UJQ中国设计秀
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"UJQ中国设计秀
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">UJQ中国设计秀
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">UJQ中国设计秀
<head>UJQ中国设计秀
<meta http-equiv="content-type" content="text/html; charset=utf-8" />UJQ中国设计秀
<title>Microblogging Application - Users</title>UJQ中国设计秀
</head>UJQ中国设计秀
<body>UJQ中国设计秀
UJQ中国设计秀
<h1>List of Users</h1>UJQ中国设计秀
<?phpUJQ中国设计秀
$users = show_users();UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value ." <small><a href='#'>follow</a></small></td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</table>UJQ中国设计秀
<?phpUJQ中国设计秀
}else{UJQ中国设计秀
?>UJQ中国设计秀
<p><b>There are no users in the system!</b></p>UJQ中国设计秀
<?phpUJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
</body>UJQ中国设计秀
</html>UJQ中国设计秀
UJQ中国设计秀

为了访问这个用户列表,在 index.php 文件中表单的上方添加一个到 users.php 的链接:UJQ中国设计秀

<p><a href='users.php'>see list of users</a></p>UJQ中国设计秀
UJQ中国设计秀

现在有了一个易于使用的用户名列表,每个用户名旁有一个 follow 链接。UJQ中国设计秀

UJQ中国设计秀
图 2. 用户列表UJQ中国设计秀
用户列表 UJQ中国设计秀
UJQ中国设计秀

在进入下一个阶段之前,还需要编写一个小函数,该函数将返回当前用户正在追随的用户。这样一来,用户就可以用这个列表来确定是否追随另一个用户。UJQ中国设计秀

回到 functions.php 文件,添加一个名为 following() 的函数,如清单 12 所示。将当前用户 ID 传递给该函数,就可以得到该用户正在追随的每个用户的 ID。UJQ中国设计秀

UJQ中国设计秀
清单 12. following() 函数UJQ中国设计秀
				UJQ中国设计秀
function following($userid){UJQ中国设计秀
$users = array();UJQ中国设计秀
UJQ中国设计秀
$sql = "select distinct user_id from followingUJQ中国设计秀
where follower_id = '$userid'";UJQ中国设计秀
$result = mysql_query($sql);UJQ中国设计秀
UJQ中国设计秀
while($data = mysql_fetch_object($result)){UJQ中国设计秀
array_push($users, $data->user_id);UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀
return $users;UJQ中国设计秀
UJQ中国设计秀
}UJQ中国设计秀
UJQ中国设计秀

现在可以在 users.php 上运行这个函数,检查某个用户 ID 是否在该数组中。如果在,则使用 unfollow 链接。如果不在,则使用默认的 follow 链接。清单 13 显示修改后的代码。UJQ中国设计秀

UJQ中国设计秀
清单 13. 修改后的 users.php 文件,它将显示 follow 和 unfollow 链接UJQ中国设计秀
___FCKpd___4
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['userid']);UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value;UJQ中国设计秀
if (in_array($key,$following)){UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=unfollow'>unfollow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}else{UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=follow'>follow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}UJQ中国设计秀
echo "</td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀
UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
___FCKpd___5
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['message'] = $msg;UJQ中国设计秀
UJQ中国设计秀
header("Location:index.php");UJQ中国设计秀
?>UJQ中国设计秀
UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
___FCKpd___6
UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
___FCKpd___7
UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
___FCKpd___8
SESSION['userid']);UJQ中国设计秀
UJQ中国设计秀
if (count($users)){UJQ中国设计秀
?>UJQ中国设计秀
<table border='1' cellspacing='0' cellpadding='5' width='500'>UJQ中国设计秀
<?phpUJQ中国设计秀
foreach ($users as $key => $value){UJQ中国设计秀
echo "<tr valign='top'>n";UJQ中国设计秀
echo "<td>".$key ."</td>n";UJQ中国设计秀
echo "<td>".$value;UJQ中国设计秀
if (in_array($key,$following)){UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=unfollow'>unfollow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}else{UJQ中国设计秀
echo " <small>UJQ中国设计秀
<a href='action.php?id=$key&do=follow'>follow</a>UJQ中国设计秀
</small>";UJQ中国设计秀
}UJQ中国设计秀
echo "</td>n";UJQ中国设计秀
echo "</tr>n";UJQ中国设计秀
}UJQ中国设计秀
?>UJQ中国设计秀

UJQ中国设计秀
 UJQ中国设计秀

接下来的步骤很简单:创建 follow 和 unfollow 链接使用的 action.php 文件。该文件接受两个 GET 参数:一个用于用户 ID,另一个用于 follow 或 unfollow。如清单 14 所示,这个文件和 add.php 文件一样简短。UJQ中国设计秀

UJQ中国设计秀
清单 14. action.php 文件UJQ中国设计秀
 UJQ中国设计秀

___FCKpd___5

UJQ中国设计秀
 UJQ中国设计秀

可以看到,这里取决于之前选择的链接,采取两种不同的动作 — follow_user()unfollow_user()。然后,设置一条消息,并将用户重定向回 index.php 页面。用户回到 index.php 页面后,不仅可以看到自己的消息,还可以看到他们追随的用户最近添加的消息。或者,如果之前选择 unfollow 链接,那么那个用户的消息将从列表中消失。稍后需要在 index.php 中添加这点代码。现在,将 follow_user()unfollow_user() 函数添加到 functions.php 中。UJQ中国设计秀

对于这两个函数要小心一点。不能只是因为用户单击了那个链接,就盲目地追随或放弃追随一个用户。首先,需要检查 following 表中是否存在这样的关系。如果存在,那么可以忽略请求(单击 follow 链接时),或者接受请求(单击 unfollow 链接时)。为简单起见,编写两种情况下都可以使用的一个 check_count() 函数,如下面的清单所示。UJQ中国设计秀

UJQ中国设计秀
清单 15. check_count() 函数UJQ中国设计秀
 UJQ中国设计秀

___FCKpd___6

UJQ中国设计秀
 UJQ中国设计秀

接下来的步骤很容易:在主页上显示当前用户正在追随的其他用户的列表。虽然已经有了一个 show_users() 函数,但那个函数是显示所有 用户。可以通过增加一个非必需的参数,轻松地改变这个函数的用途。这个参数是一个用户 ID,可以用该参数将用户列表限制为该用户 ID 所追随的那些用户。UJQ中国设计秀

清单 16 中重新编写的代码所做的事情是检查传入的 $user_id 参数。如果该用户 ID 大于 0,则使用一个查询获取此 ID 追随的所有用户的 ID。使用 implode() 函数将获得的数组转换为一个以逗号分隔的列表。然后将这个字符串 — 大致为 and id in (1,2,3...n) — 插入到已有的 SQL 查询中,从而将用户列表限制为该用户正在追随的那些用户。UJQ中国设计秀

UJQ中国设计秀
清单 16. 重新编写的代码,用于限制通过查询获得的用户列表UJQ中国设计秀
 UJQ中国设计秀

___FCKpd___7

UJQ中国设计秀
 UJQ中国设计秀

接下来,将清单 17 中的代码添加到主页中,用于显示所有那些被追随的用户。UJQ中国设计秀

UJQ中国设计秀
清单 17. 修改 index.php 以显示被追随的用户UJQ中国设计秀
 UJQ中国设计秀

___FCKpd___8
 
本文引用地址:/bc/article_65346.html
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明