0

以下“位”代码创建了一个带有简单表格的标准 html 页面,显示消息及其时间戳(可能会更好地呈现,但 atm 没关系。

PHP 首先检索所有消息(从特定更新的时间戳开始,如果提供)。它使用PDO 来检索记录(出于 DB 抽象原因)。如果提供了时间戳,它会将内容编码为 json,然后返回并终止(啊,谋杀语义)。如果没有,它将继续并返回一个完整的 html 页面,其中所有记录都显示在一个表中,以及一个按钮,当按下该按钮时,它将调用具有时间戳的相同 PHP 脚本,以检索自同时,并更新相关的表格行单元格。

我认为,虽然很基本,但效果很好。它很好地使用 jQuery 来更新任何相关的更新,我猜一些非常相似的东西可以很好地用于一个小的 html 聊天,其中 table_update 函数每两秒调用一次,或者时间呈指数递增。

问题:是否有任何良好的编码实践可以使这变得更好?

例如,我想知道给 TR 任何 id 是否是一个好主意;PDO 代码块有点混杂,我非常喜欢看到 DIE() 函数以一种高效的方式使用,而通常我只看到它用于后期错误处理、安全检查失败或虚假脚本包括。

那里有任何优秀的开发人员,他们曾经这样做过,现在正在使用更好的方法吗?

我不想要框架,我想要一些相对简单的东西,例如。闪页。

<?php
$sql = 'SELECT id, message, timestamp
    FROM messages
    WHERE id_user = :id_user';
if(isset($_REQUEST["timestamp"]))
{
 $sql .= ' && timestamp >= :timestamp';
}
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':id_user' => $id_user, ':timestamp' => $_REQUEST["timestamp"]));
$data = $sth->fetchAll();

if(isset($_REQUEST["timestamp"]))
{
 echo json_encode($data);
 die();
}

?>
<html>
 <head>...</head>
<body>
<input id='button_check' value='Update this table' type='button' />
<table id="table_check">
    <tr>
        <th>Message</th>
        <th>Time</th>
    </tr>
<?php foreach($data as $record) { ?>
    <tr id="tr_<?php echo $record["id"] ?>">
        <td><?php echo $record["strNumber"] ?></td>
        <td><?php echo $record["strFullName"] ?></td>
    </tr>
<?php } ?>
</table>

<script type="text/javascript">
var intLastUpdate = <?php echo time() ?>;
$(document).ready(function() {
 $('#button_check').click(update_table());
});

function update_table()
{
 $.getJSON("this_page.php?timestamp=" + intLastUpdate, function(data) {
        $.each(data, function(index, record) {
            $('#tr_' + record.id).find("td").eq(0).html(record.message);
            $('#tr_' + record.timestamp).find("td").eq(1).html(record.timestamp);
            if(intLastUpdate < record.timestamp) {
                intLastUpdate = record.timestamp;
            }
        });
    });
}
</script>

<body>
</html>
4

0 回答 0