我如何发送SQL变量从HTML表到JS弹出窗口,然后到PHP变量没有jquery?



我正在尝试制作一个软件,可以创建一个工作板,在那里你可以添加工作和维护人员可以检查他们去。我的问题是在deleteData()的底部获得我的表的request_ID到我的SQL查询。我已经试了很多次了,任何建议都会很有帮助。

我不得不让这件事变得比它需要的更困难。我只是试着点击一个按钮,弹出一个表单,询问用户是否完成了任务,然后从表中删除它。

<!DOCTYPE html>
<html>
<head>
<script>
function complete() {
document.getElementById("myForm").style.display = "block";
}
function closeForm() {
document.getElementById("myForm").style.display = "none";
}

</script>
<link rel="stylesheet" href="styles.css">
<title>KCHC Work Orders</title>
</head>
<?php
$host = "localhost";
$user= "";
$password = "";
$database="workorders";
$DBConnect = @new mysqli($host,$user,$password,$database);
if ($DBConnect->connect_error)
echo "The database server is not available at the moment. " .
"Connect Error is " . $DBConnect->connect_errno .
" " . $DBConnect->connect_error . ".";
else{
echo "Connection made";
}
?>
<header>
<div class="menu">
<nav>
<a href="orderform.php">Create a Request</a>
</nav>
</div>
</header>
<body>
<?php
$sql = "SELECT request_id, name, date, location, description FROM requests";
$stmt = $DBConnect->query($sql);

if ($stmt->num_rows > 0) {
echo '<div class="request_box">';
echo '<table id="myTable" ><tr><th>ID</th> <th>Name</th> <th>Date</th> <th>Location</th> <th>Description</th> <th>Complete?</th> </tr>';
while (($Row = $stmt->fetch_assoc()))
{
echo "<tr id=";
echo $Row['request_id'] . ">";
echo "<th>" . $Row['request_id'] . "</th> <th>" . $Row['name'] . "</th> <th>" . $Row['date'] . "</th> <th>" . $Row['location'] . "</th> <th>" . $Row['description'] . "</th> <th>" . '<input type="button" onclick="complete()" value="' . $Row["request_id"]. '" />' . "</th></tr>";
}
echo "</table> </div>";

}
else{
echo '<div class="request_error">';
echo "<p> There are no jobs to complete!</p> <br>";
echo "<p> If you think there should be, please contact Matt or his genius son</p>";
echo '</div>';
}

function sendit($i){
$newId = $i;
}
?>
`
<div class="popup" id="myForm" >
<form id="formReal" method="post">
<h1>Would you like to remove this job? </h1>
<input type="submit" class="btn" onclick="" submit="<?php deleteData() ?>" value="Remove from List" />
<button type="button" class="btnCancel" onclick="closeForm()">Cancel</button>
</form>
</div>
</body>
<?php
function deleteData(){
global $DBConnect;
$id_new = $newId;
$sql = "DELETE FROM requests WHERE request_id = 3";
$stmt = $DBConnect->query($sql);
} 
?>

您不能将PHP代码放入javascript事件中并让它按照您希望的方式在代码中工作。PHP代码在页面发送给用户之前在服务器上运行。PHP可以用来生成javascript代码,但是PHP不能被javascript调用in-page。Javascript在浏览器中运行。如果希望javascript代码触发PHP代码,则需要让javascript向单独的PHP脚本发起HTTP(S)请求。这可以通过将浏览器发送到该脚本的新页面来实现,也可以通过使用AJAX启动对该脚本的后台调用,同时保持用户在同一页面上。看来后一种选择正是你想要的。

所以这里你想优雅地完成这个是AJAX编程方法,这是一个完整的编程范例,非常复杂;我们不可能用一个答案教你。基本思想是,在javascript中,您需要发起一个请求,然后您需要事件处理代码来侦听响应,执行错误处理,然后更新页面上的HTML以反映从您调用的脚本获得的任何响应。

然后在被调用的PHP脚本中,您将SQL查询实际删除数据库中表中的适当行。

如果您查找了一些基本的AJAX教程,并且觉得自己无法理解,那么您可能需要重新考虑一种更简单的方法来完成此操作,这对用户来说可能有点笨拙或过时("Web 1.0")。

你可以通过HTML表单轻松实现你想要的,使用一个带有action="/path/to/some_script.php"然后将用户发送到一个新页面,发送POST变量,PHP脚本将读取这些变量。然后,该页面可以重定向回原始页面,在删除项目后显示页面的刷新版本。这里的折衷是,编程更容易,更不容易出错,调试也更容易,但您需要将用户发送到不同的页面。所以你得到更少的工作,但更笨拙的用户体验。

这是你的选择。如果我处在您的位置,并且我需要在临近的截止日期之前完成工作,我可能会使用HTML表单提出一个快速的解决方案,但是我会开始学习AJAX,这需要您花几个月的时间才能做好。当你准备好了,再回来提出一个漂亮的AJAX解决方案。

相关内容

最新更新