技术开发 频道

使用 PHP 在站点上构建类似 Twitter 的系统

  添加一系列的更新

  现在可以打开 functions.php 文件并在其中添??另一个函数。这一次,将函数命名为 show_posts()。它将显示特定用户 ID 的所有贴子,如下面的清单所示。

  清单 8. show_posts() 函数

function show_posts($userid){
    $posts
= array();

    $sql
= "select body, stamp from posts
     where user_id = '$userid' order by stamp desc";
    $result = mysql_query($sql);

    
while($data = mysql_fetch_object($result)){
        $posts[]
= array(     'stamp' => $data->stamp,
                            'userid' => $userid,
                            'body' => $data->body
                    );
    }
    return $posts;

}

  如果为这个函数传递一个用户 ID,它将在一个多维数组中按日期倒序的顺序返回那个用户发出的贴子。要使用该函数,只需在 index.php 上调用它,并检索那个用户的所有贴子。由于对于每个记录只需处理少量的数据,这种查询可以很好地进行扩展。

  清单 9 是添加到 index.php 页面的代码,这些代码就放在前面添加的表单之后。通过使用 show_posts() 函数和会话变量,可以获得登录的用户发出的所有贴子。如果没有贴子,则显示某种错误消息。如果有贴子,则在一个表中逐个显示它们 — 或者,如果想别致一点,可以使用自己的级联样式表(CSS)。

  清单 9. 在 index.php 页面上显示贴子

<?php
$posts
= show_posts($_SESSION['userid']);

if (count($posts)){
?
>
<table border='1' cellspacing='0' cellpadding='5' width='500'>
<?php
foreach ($posts
as $key => $list){
    echo
"<tr valign='top'>\n";
    echo
"<td>".$list['userid'] ."</td>\n";
    echo "<td>".$list['body'] ."<br/>\n";
    echo "<small>".$list['stamp'] ."</small></td>\n";
    echo "</tr>\n";
}
?
>
</table>
<?php
}
else{
?
>
<p><b>You haven't posted anything yet!</b></p>
<?php
}
?
>

  图 1 显示到目前为止的基本界面 — 还不错,几分钟就有这样的成绩。

  图 1. 基本界面  

  容易的部分就完成了。现在有了一个基本的应用程序,用户可以发布状态,并看到它在页面上显示。但是,还缺少一个重要的部分:除了发布状态的人以外,没有人看到状态更新。在下一节中,将创建一个简单的界面,其中列出系统中的所有用户,并且允许已登录的用户追随其他用户并看到他们的状态更新。

0
相关文章