2013-03-07 103 views
0

好吧,让我开始说我是一个业余爱好者,所以你的所有帮助真的很感激。需要帮助提交我的表单数据到数据库

好的,我有一个表单,名为'skills.php',在此表单中,您输入以下字段'Skills_ID,Employee_ID,First_name,Last_name和Skill'。我已经使用了java,因此当您选择employee_ID时,名称字段会更改为员工(链接到employee表)。

但是,由于我已经添加了这个功能,我无法将我的表单数据保存到我的数据库中。 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

我想将它添加到技能表 – user2108411 2013-03-07 14:42:34

回答

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' => ...)); 
0

首先,要小心。 Java is not JavaScript

你说得对,你删除了INSERT行。网上有几篇关于如何做到这一点的文章。 Here is one。只需google PDO Insert获取更多结果。

您应该将这些INSERT命令放入您的insertskill.php文件中,并创建另一个INSERT命令,可能是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! 
0

首先要说的是,您不使用Java。您正在使用JavaScript(实际上ECMAScript与Java非常不同)

接下来,您是正确的,现在没有INSERT语句,您需要编写一个插入要插入的任何数据

然而,您还需要以某种方式说明何时调用insertskill.php以获取Ajax请求(获取表单名称)以及何时调用插入数据的区别。 jQuery我猜)请求,你可以更改网址为:

$.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... 
    }