0

我有一个普通的 html 表格,其中每个单元格都包含一个名称。我为这些单元格中的每一个添加了一个函数,如果它是白色的,则将单元格的背景颜色变为绿色,反之亦然。但是,我还想在单击单元格时更新 mySql 数据库,但我似乎无法找到一个好的方法来执行此操作,而无需重新加载页面(我不希望这样做)或使用 javascript连接到服务器(这似乎是一个非常糟糕的做法)。此时页面已经加载完毕。有人有什么好的建议吗?

<script type="text/javascript">
var tbl = document.getElementById("table");
        if (tbl != null) {
            for (var i = 1; i < tbl.rows.length; i++) {
                for (var j = 0; j < tbl.rows[i].cells.length; j++)
                    tbl.rows[i].cells[j].onclick = function () { getval(this); };
            }
        }

        function getval(cel) {
            if(cel.style.backgroundColor == "green")
            {
                 cel.style.backgroundColor = "white";

                 // Here I would like to update my datebase with mySql
                 // query(UPDATE team SET attended=0 WHERE name = cel.innterText)
                 // (name associated with the cell)

            }
            else
            {
                cel.style.backgroundColor = "green";
                 // Here I would like to update my datebase with mySql
                 // query(UPDATE team SET attended=1 WHERE name = cel.innterText)
                 // (name associated with the cell)
            }
        }   
</script>
4

2 回答 2

2

从广义上讲,您需要将应用程序的一部分转换为服务,并通过来自页面的异步 HTTP 请求对其进行调用(这属于“AJAX”名称)。

该服务可以在您的服务器上编写为额外的 PHP 脚本,它可能不一定返回 HTML 文档,但可能返回 XML 或 JSON(后者现在可能更流行),这将由浏览器中的 JavaScript 脚本处理必要时采取进一步行动(例如,仅当此请求成功时才将背景变为白色)。

正是这个 PHP 脚本应该处理 SQL 查询。

作为一般准则,不要在客户端(在您的 JavaScript 脚本中)准备或处理任何 SQL,并确保在运行 SQL 查询时使用准备好的语句。(我只是这么说,因为您显然是新手,您将不可避免地在这里或各种博客上找到代码片段,人们只是通过使用查询字符串中的变量将变量放入 SQL 语句中。这是非常糟糕的做法。)

编辑

实际上,我只需要W3Schools 就可以得到一个容易受到 SQL 注入攻击的 MySQL 查询的坏示例(问题在$sql="SELECT * FROM user WHERE id = '".$q."'";)。不要使用这个例子。我会避免 W3Schools,请参阅http://www.w3fools.com/

于 2013-08-22T11:52:11.580 回答
1

SQL 是服务器端,而不是客户端。您需要使用 AJAX 将数据发送到您的服务器,然后服务器将使用 SQL 进行保存。

于 2013-08-22T11:42:25.313 回答