我有一个非常简单的网络应用程序,允许用户输入名字和姓氏,点击提交将名称插入sql数据库。 在表单下方,有一个显示数据库表内容的HTML表。
如果用户点击数据库的任何一行,则使用以下函数将HTML元素的ID(设置为数据库ID的相同值)保存到javascript变量中。
<!--JS Functions-->
<script>
//Determine which record is selected.
var id;
function TableSelect(el) {
id = el.id;
alert(id);
}
</script>
以下是表格:
<!--HTML Form -->
<form method="post" action="index.php">
First Name: <input type="text" name="FirstName" value="">
<br><br>
Last Name: <input type="text" name="LastName" value="<?php echo $LastName;?>">
<br><br>
<input type="submit" name="submit" value="Submit">
<input type="submit" name="delete" value="Delete" onclick="Delete()">
</form>
以下是数据的PHP处理和SQL表的输出:
//prepare query to insert data from form into DB
if (isset($_POST['submit'])){
$query = "INSERT INTO tbl_HR_Master (First_Name, Last_Name) VALUES ('{$FirstName}', '{$LastName}') ";
$result = mysqli_query($connection, $query);
//Test if there was a query error
querycheck($result);
}//end if
//prepare query to populate table from DB
$query2 = "Select id, First_Name as 'First Name', Last_Name as 'Last Name' from tbl_HR_Master";
$result2 = mysqli_query($connection, $query2);
//Test if there was a query error
querycheck($result2);
//display table
echo "</br>";
echo "<table id=\"tbl_HR_Master\" border='1'><tr class=\"nohover\"\">";
// printing table headers
$fields_num = mysqli_num_fields($result2);
for($i=0; $i<$fields_num; $i++) {
$field = mysqli_fetch_field($result2);
echo "<td>{$field->name}</td>";
} //end for
echo "</tr>\n";
// print table rows
while($row = mysqli_fetch_row($result2))
{
echo "<tr>";
$id = $row[0];
foreach($row as $cell){
echo "<td onclick=TableSelect(this) id=". $id .">".$cell."</td>";
}//end foreach
echo "</tr>\n";
}//end while
我想运行一个从数据库中删除所选记录的PHP函数,但显然PHP在服务器上运行,因此,我需要一些方法告诉PHP选择了哪条记录。再一次,如果你看看我的Javascript函数,var id =最后选择的记录。如何将此JS变量解析到服务器进行处理?
简而言之,想要在PHP中执行此操作:
//delete selected record
if (isset($_POST['delete'])){
$query3 = "Delete from tbl_HR_Master where id = ". JS VARIABLE HERE." ";
} //end if
答案 0 :(得分:1)
<强>基于表单的强>
您可以使用隐藏的表单字段执行此操作,并为您提供特定的ID:
<input type="hidden" id="your-id" value="" />
然后在TableSelect
函数中指定值:
document.getElementById('your-id').value = id;
然后你可以像你的其他请求(post / get)参数那样访问变量:
$_POST['id']
<强> - 基于Ajax 强>
使用jQuery,您可以在TableSelect
函数中执行这样的ajax请求:
$.ajax({
url: 'file.php',
type: 'post',
data: {'id': el.id},
success: function(data, status) {
// ...
}
});
请求参数访问权限相同:
$_POST['id']
答案 1 :(得分:0)
您可以在表单中包含隐藏变量,并使用javascript设置隐藏变量的值onclick。
<!--JS Functions-->
<script>
//Determine which record is selected.
var id;
function TableSelect(el) {
document.getElementById('selectedRow').value = el.id;
}
</script>
在表单标记
中添加以下内容<input type="hidden" name="selectedRow" id="selectedRow">
然后,您可以将查询更新为
$query3 = "Delete from tbl_HR_Master where id = $_POST['selectedRow']";
当然不要忘记添加清理和验证以及所有爵士乐。