使用 HTML 按钮执行 PHP 和 SQL
Posted
技术标签:
【中文标题】使用 HTML 按钮执行 PHP 和 SQL【英文标题】:Executing PHP & SQL with HTML button 【发布时间】:2015-09-07 01:38:42 【问题描述】:我有一个网页,其中包含使用 javascript/jquery 生成的数组。在按下按钮时,我想运行一个 php 函数,它使用 JavaScript 数组更新 mysql 数据库。
我有一个带有 PHP 函数的 .php 文件,它连接到数据库并运行 UPDATE
查询,我想使用该数组。
所以我有 home.php,它有按钮:
<?php
include_once ('submit.php')
?>
<center><button id="submit" class="button1" >Submit<span></span></button></center>
和数组:
<script>
selectedItemsArray;
</script>
我有 submit.php,它有 sql UPDATE
:
function submit()
$sql = $dbh->prepare("UPDATE pending_trades SET item_list=:itemlist,");
$sql->bindParam(':itemlist', /*array taken from home.php*/);
$sql->execute();
我会在将数组放入数据库之前将其转换为 JSON,但我需要知道如何使用 submit.php 文件访问该数组,以及如何在html 按钮单击。
【问题讨论】:
JavaScript 不能直接与 PHP 对话,因为它们在时间上不兼容。 JS 在客户端上运行,到那时,在服务器上运行的 PHP 已经完成了它的工作并且早已不复存在。你需要 AJAX。 【参考方案1】:使用 jquery AJAX.
<button id = "submit" class = "button1" > Submit <span></span></button>
你的 js 代码
$('#submit').click(function()$.ajax(
method: "POST",
url: "submit.php",
data: itemlist,
.done(function( msg )
alert( "Data Saved: " + msg );
);
);
和你的 php 文件。不包含文件
$array = json_decode($_POST['itemlist'], true);
记住你的 js 数组 itemlist 应该是 json 格式,例如
$itemlist = '"a":1,"b":2,"c":3,"d":4,"e":5';
【讨论】:
谢谢。当我在做js AJAX代码时,会在“submit.php”中运行函数吗?如果没有,我该如何将其添加到该代码中?【参考方案2】:这里有多个问题。最关键的是,您似乎混淆了服务器端和客户端脚本。
您将submit.php
包含在home.php
中,它在服务器端声明了一个函数submit()
。您的代码在服务器端从未执行过此函数,因此服务器端输出为空,即<?php include_once ('submit.php');?>
评估为无。客户端收到的是一个只有按钮的 HTML 文件,函数submit()
永远不会传递给浏览器。
记住:服务器端脚本总是在服务器上执行,绝不传递给浏览器。这意味着当文件进入浏览器时,您将永远不会再看到 <?php
和 ?>
- 这些 PHP 代码早就完成了。
你需要找出什么来完成你的目标:
使用客户端脚本 (JavaScript) 监听按钮点击。
使用客户端脚本 (JavaScript) 通过 AJAX 将表单提交到服务器。
使用服务器端脚本 (PHP) 读取 POST 后的数据,将数据提取到数组中。
实际上,您是在问三个问题。他们真的很简单;你可以自己读。
我会为你推荐一个架构:
home.php
或 home.html
:包含按钮,<link href="home.css">
和 <script src="home.js">
。
home.js
:客户端脚本监听按钮点击并将AJAX提交给submit.php
。
home.css
:home.html
/home.php
中的按钮和其他元素的样式。
submit.php
:服务器端脚本检查 POST 变量和 SQL 更新操作。
另一个问题:您正在使用已弃用的标签<center>
。我建议您删除它并改用 CSS 布局按钮。
【讨论】:
以上是关于使用 HTML 按钮执行 PHP 和 SQL的主要内容,如果未能解决你的问题,请参考以下文章