我的数据库中有三个表:Person (id, name, last_name), System (id, name), PersonInSystem(id, person_id, system_id)
。最后一个用于将人与系统链接。
我使用<select>
来显示我的数据库中的每个人
echo '<option value="'.$queryResult["id"].'">'.$queryResult["name"].' '.$queryResult["last_name].'</option>';
我使用Ajax获取id并发送查询SELECT * FROM Person WHERE id = ID_FROM_SELECT
。然后,我显示这样的数据(我不能复制代码,所以我必须从头重写它,我将使用伪PHP + HTML),其主要目的是编辑一个选定的人:
<form>
Name: <input type="text" value="'.$nameFromDB.'" name="name">
Last name: <input type="text" value="'.$lastNameFromDB.'" name="lastname">
System: while () { // if one person is assigned to many systems, I will display them all in separate selects
<select><option value="'.$systemAssignedToPerson.'">'.$systemAssignedToPerson.'</option>
while () {
// display every system except for the one listed above
}
</select><img src="drop.gif" onclick="deleteSystem(document.getElementById(\"system\").value)"><input type="hidden" id="system" value="'.$systemAssignedToPerson.'">
}
<input type-"submit" value="Edit" name="editPerson">
</form>
现在,如果我想取消给定系统中的某个人,我想点击drop.gif图像并触发deleteSystem(value)
函数,它将发送查询DELETE FROM PersonInSystem WHERE system_id = SYSTEM_ID_SENT and person_id = PERSON_ID_SENT
,但我无法通过价值,我不知道该怎么做(我是Ajax的新手)。
我可以将人的id存储在会话变量中,但我不知道如何发送系统ID,而且我也不想将数据发送到另一个页面。
此外,我想刷新更改系统分配的页面(应显示同一个人)。
答案 0 :(得分:3)
我认为您需要向服务器调用本机javascript函数
function deleteSystem(value){
var deleteflag=confirm("Are you sure to delete?!!");
if(deleteflag){
//setup your request to the server
window.location='delete.php?SYSTEM_ID_SENT='+value
}
}
在delete.php文件中,您可以通过这种方式获取SYSTEM_ID_SENT
$id=$_GET['SYSTEM_ID_SENT'];
$personid=$_SESSION['your session variable name'];
// run your delete query
$delqry=mysql_query("");
if($delqry){
//redirect to the page you want
header('location:yourpage.php');
}
答案 1 :(得分:1)
更改代码如下。 它应该工作
<img src="drop.gif" onclick="deleteSystem('<?php echo $systemAssignedToPerson;?>')">
答案 2 :(得分:1)
您的deleteSystem JavaScript函数需要向服务器发送以下类型的请求:
(示例:取消分配的处理程序文件)
"unassign.php?systemId=459&personId=300"
(示例:通用处理程序文件)
"handler.php?systemId=459&personId=300&action=unassign"
在unassign.php中:
$systemId = $_GET["systemID"];
$personId = $_GET["personID"];
/* Your SQL stuff here -
statement something like
DELETE FROM PersonInSystem WHERE person_id = "$personId" AND system_id = "$systemId" */
改进: *使用像Prototype(oldschool,轻量级)或jQuery(更重)的javascript库来处理Ajax的东西 *使用$ _POST并发布变量而不是$ _GET *使用库来正确引用您的SQL *关心html特殊字符和正确的输入验证/过滤