使用PHP / JS执行操作

时间:2014-09-18 14:32:51

标签: javascript php pdo

帮助自学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更新查询,该查询将记录中的列设置为完成状态&#39; 1&#39;。

我原本想问一个问题&#39;处理此类交互的最佳做法是什么?然而,这可能会吸引基于意见的答案,我在这里不允许这样做。

相反,我会这样说:有没有办法让所有这些&#39;行动&#39;在同一页面上运行? (理想情况下,由于格式的布局样式很难使用按钮而不是表格)

我知道如果它使用表单,我可以简单地命名每个表单的提交按钮,然后运行一个if语句(唯一的问题是传递id,但我确定我能算出来例如

if (isset($_POST['exampleAction'])) { Run the code.. }

非常感谢指南/教程/类似问题等的任何链接。如前所述,我自学PHP - 我知道很少有最佳实践&#39;并希望了解更多。

1 个答案:

答案 0 :(得分:0)

您可以考虑的一件事是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