好的,让我先说我是业余爱好者,所以非常感谢你所有的帮助。
好的,我有一个名为'skills.php'的表单,在此表单中,您输入以下字段'Skills_ID,Employee_ID,First_name,Last_name和Skill'。我使用了java,所以当你选择employee_ID时,名字字段会变成什么样的员工(链接到员工表)。
但是,由于我添加了此功能,因此无法将表单数据保存到数据库中。 Maby在实现java函数时意外删除了一行代码。有人可以帮我搞清楚吗?下面是我的表格'Skill.php':
<html>
<?php
// Connecting to database
$pdo = new PDO("mysql:host=localhost;dbname=hrmwaitrose;charset=utf8", "root", "");
?>
<html>
<head>
<link type="text/css" rel="stylesheet" href="style.css"/>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <!-- Online Jquery -->
<title>Skill</title>
</head>
<body>
<div id="content">
<h1 align="center">Add Employee Skill</h1>
<form action="insertskill.php" method="post">
<div>
<p>
Skill ID:
<input type="text" name="Training_ID">
</p>
<p>
Employee ID:
<select id="Employee_ID">
<option value="">Select one</option>
<?php
$st = $pdo->prepare("SELECT Employee_ID FROM Employee");
$st->execute();
$rows = $st->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
?><option value="<?php echo $row ['Employee_ID']; ?>"><?php echo $row ['Employee_ID']; ?></option><?php
}
?>
</select>
<p>
First name:
<input type="text" name="First_name" id="First_name">
</p>
<p>
Last name:
<input type="text" name="Last_name" id="Last_name">
</p>
<p>
<p>Skill: <select name="Skill">
<option value="">Select...</option>
<option value="Checkouts">Checkouts</option>
<option value="Fresh goods">Fresh goods</option>
<option value="Dry goods">Dry goods</option>
<option value="Fruit & Veg">Fruit & Veg</option>
<option value="Operations">Operations</option>
</select>
</p>
<input type="submit">
<INPUT Type="BUTTON" VALUE="Back" ONCLICK="window.location.href='index.html'">
</form>
</div>
<script type="text/javascript">
$(function() { // This code will be executed when DOM is ready
$('#Employee_ID').change(function() {
var $self = $(this); // jQuery object with the select inside
$.post("insertskill.php", { Employee_ID : $self.val()}, function(json) {
if (json && json.status) {
$('#First_name').val(json.name);
$('#Last_name').val(json.lastname);
}
})
});
})
</script>
</body>
</html>
这是按下提交按钮'insertskill.php'时使用的代码:
<?php
$pdo = new PDO("mysql:host=localhost;dbname=hrmwaitrose;charset=utf8", "root", "");
header("Content-Type:application/json; Charset=utf-8");
$st = $pdo->prepare("SELECT First_name, Last_name FROM Employee WHERE Employee_ID = :employee_id");
$st->execute(array ('employee_id' => $_POST['Employee_ID']));
$data = $st->fetch(PDO::FETCH_ASSOC);
echo json_encode(array ('status' => true, 'name' => $data ['First_name'], 'lastname' => $data ['Last_name']));
?>
只是通过查看此代码imn非常肯定我可能会意外删除编码将其插入数据库,但是我不知道如何解决它:(有人可以帮忙吗?非常感谢!提前致谢
答案 0 :(得分:0)
在"insertskill.php"
第6行:
$st = $pdo->prepare("SELECT First_name, Last_name FROM Employee WHERE Employee_ID = :employee_id");
您正在执行SELECT
查询(阅读),听起来更像是您想要INSERT
查询(写)。
您案例中的INSERT
声明类似于:
$st = $pdo->prepare("INSERT INTO Employee (Training_Id,Employee_Id,First_Name,Last_Name,Skill) VALUES (:training_id,:employee_id,:first_name,:last_name,:skill)")
$st->execute(array(':training_id' => $training_id, ':employee_id' => ...));
答案 1 :(得分:0)
首先,小心。 Java is not JavaScript
!
你是对的,你删除了INSERT行。网上有几篇关于如何做到这一点的文章。 Here is one。只需谷歌PDO Insert
即可获得更多结果。
您应该将这些INSERT命令放在insertskill.php
文件中并创建另一个命令,可能是fetchName.php
或类似的东西,使用您提供的代码返回员工的名字和姓氏它的id,并在JavaScript $.change()
函数中使用它。对于名为insertskill.php
的文件来说,获取数据是没有意义的。
你忘了在$.post()
命令中指定你期望一个JSON。那样做:
$.post("insertskill.php", { Employee_ID : $self.val()}, function(json) {
if (json && json.status) {
$('#First_name').val(json.name);
$('#Last_name').val(json.lastname);
}
}, 'json'); // Here!
答案 2 :(得分:0)
首先要说的是你没有使用Java。您正在使用JavaScript(实际上ECMAScript与Java非常不同。
接下来,你是对的,现在根本没有INSERT语句,你需要编写一个来插入你要插入的数据。
但是,您还需要以某种方式区分何时调用insertskill.php以获取Ajax请求(获取表单的名称)以及何时调用它来插入数据。所以在您的Javascript(jQuery我猜)请求中,您可以将URL更改为:
$.post("insertskill.php?ajax"
然后在insertskill.php中执行:
if(isset($_GET['ajax'])) {
header("Content-Type:application/json; Charset=utf-8");
$st = $pdo->prepare("SELECT First_name, Last_name FROM Employee WHERE Employee_ID = :employee_id");
$st->execute(array ('employee_id' => $_POST['Employee_ID']));
$data = $st->fetch(PDO::FETCH_ASSOC);
echo json_encode(array ('status' => true, 'name' => $data ['First_name'], 'lastname' => $data ['Last_name']));
}
else {
// Do the insert statement stuff...
}