【问题标题】:Need help submitting my form data into database需要帮助将我的表单数据提交到数据库
【发布时间】:2013-02-22 19:30:41
【问题描述】:

好的,让我先说我是个业余爱好者,非常感谢您的所有帮助。

好的,我有一个名为“skills.php”的表单,您可以在此表单上输入以下字段“Skills_ID、Employee_ID、First_name、Last_name 和 Skill”。我使用过 java,所以当您选择employee_ID 时,名称字段会更改为是哪个员工(链接到员工表)。

但是,由于我添加了此功能,我无法将表单数据保存到我的数据库中。可能我在实现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']));
?>

仅通过查看此代码,我很确定我可能会意外删除编码以将其插入数据库,但是我不知道如何修复它:(有人可以帮忙吗?非常感谢!提前致谢

【问题讨论】:

  • 我想将其添加到技能表中

标签: php html mysql phpmyadmin xampp


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    首先,小心。 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!
    

    【讨论】:

      【解决方案3】:

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

      接下来,你是对的,现在根本没有 INSERT 语句,你需要写一个来插入你想插入的任何数据。

      但是,您还需要以某种方式区分何时为 Ajax 请求调用 insertskill.php(以获取表单的名称)和何时调用它以插入数据。因此,在您的 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...
        }
      

      【讨论】:

        猜你喜欢
        • 2016-11-06
        • 1970-01-01
        • 2016-05-29
        • 1970-01-01
        • 1970-01-01
        • 2021-10-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多