以下“位”代码创建了一个带有简单表格的标准 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>