为了帮助自学PHP,我已经委托自己使用PDO更新旧的mysql_ *代码。
这一直很好,并且随着我的学习,我已经能够大大减少代码量。但是,我的研究在特定区域遇到了砖墙。
当前,我们已经有了它,因此项目记录在列表视图中,并且每个项目都有一组“动作/选项”。每个操作都链接到一个运行少量代码的PHP文件,然后将您带回到列表视图。
这是一个例子:
function projectComplete(id) {
location.href = "complete.php?id=" + id;
}
<button type="button" class="projectComplete" onclick="projectComplete('<?= htmlentities($row['projectid']); ?>')"></button>
complete.php文件仅包含一个SQL更新查询,该查询在记录中将完成状态设置为“ 1”。
我最初想问的问题是“处理这种类型的交互的最佳实践是什么”,但是这可能会吸引基于观点的答案,在这里我不允许阅读。
取而代之的是,我会这样说:是否有一种方法可以让所有这些“动作”在同一个页面中运行?(由于难以在表单的布局样式中使用,因此理想情况下可以使用按钮而不是表单)
我知道,如果使用表单,我可以简单地以不同的方式命名每个表单的提交按钮,然后运行if语句(唯一的问题是传递id,但是我敢肯定,例如
if (isset($_POST['exampleAction'])) { Run the code.. }
任何对指南/教程/类似问题的链接等将不胜感激。如前所述,我正在自学PHP-我了解很少的“最佳实践”,并且想了解更多。
您可以考虑的一件事是MVC模式,其中页面调用将基于某些参数运行某些功能。一个成熟的MVC框架可能超出了您对该项目的需要,但是模仿控制器的分配肯定是可行的。可以达到这种效果的代码(未经测试的代码):
if (isset($_GET['action'])) {
new Actions()->dispatch('action_'.$_GET['action']);
}
class Actions {
public function dispatch($action) {
if (method_exists($this, $action)) {
$this->$action($_GET);
} else {
http_response_code(400);
exit(1);
}
}
// The following functions are examples only!
public function action_Create($parameters) {
// Create database record
}
public function action_Read($parameters) {
// Read database record
}
public function action_Update($parameters) {
// Update database record
}
public function action_Delete($parameters) {
// Delete database record
}
}
然后您会打电话给(例如) action.php?action=Read&name=foo&author=bar
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句