看看我的两种不同情况。
function pre_invoice($value) //earlier it was public function ---- (typo in the question)
{
//Code to insert query in database
}
<?php
require_once 'fun.php';
if(isset($_POST['submit'])){
pre_invoice(999);
}
?>
<table class="table table-striped table-hover table-bordered">
<thead class="text-center">
<tr>
<th>Service</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
<form method="POST">
<tr>
<td></td>
<td>8</td>
</tr>
<tr>
<td></td>
<td>12</td>
</tr>
<tr>
<td></td>
<td>4</td>
</tr>
<tr>
<td></td>
<td>6</td>
</tr>
<input type="submit" name="submit" />
</form>
</tbody>
</table>
现在,当我单击form.php中的Submit按钮时,查询将插入数据库中。
<table class="table table-striped table-hover table-bordered">
<thead class="text-center">
<tr>
<th>Service</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
<form method="POST">
<tr>
<td></td>
<td>8</td>
</tr>
<tr>
<td></td>
<td>12</td>
</tr>
<tr>
<td></td>
<td>4</td>
</tr>
<tr>
<td></td>
<td>6</td>
</tr>
<input type="submit" name="submit" />
</form>
</tbody>
</table>
<?php
require_once 'fun.php';
if(isset($_POST['submit'])){
pre_invoice(999);
}
?>
<div id="form"></div>
<script>
$("#form").load('form.php');
</script>
现在,当我单击index.php中的“提交”按钮时,查询未插入数据库中。
我在 index.php 中包含了所有库,所有HTML标记正确,SQL查询正确。
答案 0 :(得分:1)
在这种情况下,您要做的第一件事是检查服务器日志中是否存在PHP错误。这取决于您使用的Web服务器及其配置。
您还可以在开发人员工具上检查浏览器的JavaScript控制台是否存在错误(默认情况下,您可以在基于Chromium的浏览器上使用Ctrl + Shift + J打开控制台)。
进行一些更改后,它可以在我的测试中正常工作。
fun.php
<?php
function pre_invoice($value) {
// Your code
}
我删除了public
,这不是类的方法,因此不能使用public / private关键字(这会产生PHP错误)
我添加了<?php
来指示PHP代码开始,我们不必关闭它,因为该文件没有任何其他HTML代码
form.php
<form method="POST">
<input type="submit" name="submit" />
</form>
(此文件与您提供的文件相同)
index.php
<?php
require_once 'fun.php';
if(isset($_POST['submit'])){
pre_invoice(999);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>title</title>
</head>
<body>
<div id="form"></div>
<!-- Load jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<!-- Load form -->
<script>
$("#form").load('form.php');
// We load the form only once
// setInterval would load the form many times (in your code every 3 seconds)
</script>
</body>
</html>
(我不确定您是否仅提供了HTML文件的一部分)
我添加了基本的HTML结构(等)
我添加了jQuery库来支持他$
(这在浏览器的控制台上产生了错误)(我从Google的CDN加载了jQuery,您可能希望在本地托管它)
我删除了setInterval
,因为我认为您不需要它,也不必每3秒加载一次表单
PS:您的SQL插入代码也可能会产生错误。
form.php
由于您的代码无效,因此情况1(浏览器默认情况下会加载您的HTML代码)和情况2(动态地加载HTML ID)会出现不同的结果。
因此,您应该将<form>
标记移到表格外或<td>
内。