我有一个网页,其中包含使用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文件访问数组,以及如何运行{{1}单击HTML按钮上的函数。
答案 0 :(得分: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数组项目列表应该是json格式,例如。
$itemlist = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
答案 1 :(得分:1)
这里有很多问题。最重要的是,您似乎混淆了服务器端和客户端脚本。
您在submit.php
中包含home.php
,它在服务器端声明了一个函数submit()
。您的代码在服务器端从不执行此功能,因此服务器端输出为空,即。 <?php include_once ('submit.php');?>
评估为空。客户端接收的是仅包含按钮的HTML文件,函数submit()
永远不会传递给浏览器。
请记住:服务器端脚本在服务器上执行始终,从不传递给浏览器。这意味着当文件到达浏览器时,您将永远不会再看到<?php
和?>
- 那些PHP代码已经很久完成了。
为了达到你想要的目的,你需要找到什么:
使用客户端脚本(JavaScript)收听按钮点击。
使用客户端脚本(JavaScript)通过AJAX将表单提交给服务器。
使用服务器端脚本(PHP)读取POST-ed数据,将数据提取到数组中。
实际上,您提出了三个问题。他们真的很直白;你可以自己阅读。
我要做的是为您推荐一个架构:
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来布局按钮。