0

さて、私はアマチュアと言うことから始めましょう、それであなたのすべての助けは本当にありがたいです。

OK、「skills.php」というフォームがあります。このフォームに、「Skills_ID、Employee_ID、First_name、Last_name、Skill」のフィールドを入力します。私はJavaを使用したので、employee_IDを選択すると、名前フィールドが(employeeテーブルにリンクされている)どの従業員に変更されます。

ただし、この関数を追加したため、フォームデータをデータベースに保存できません。Maby iは、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']));
?>

このコードを見るだけで、データベースに挿入するために誤ってコーディングを削除した可能性がありますが、修正方法がわかりません:(誰かが助けてくれますか?大いに感謝します!よろしくお願いします

4

3 に答える 3

0

最初に言うことは、Javaを使用していないということです。JavaScript(実際にはJavaとは非常に異なるECMAScript)を使用しています。

次に、正解です。INSERTステートメントがまったくないので、挿入するデータを挿入するために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...
  }
于 2013-03-07T15:01:55.253 に答える
0

6行目"insertskill.php"

$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' => ...));
于 2013-03-07T14:53:46.383 に答える
0

まず、気をつけてください。Java is not JavaScript!

そうです、INSERT 行を削除しました。その方法については、ウェブ上にいくつかの記事があります。これが1つです。PDO Insertより多くの結果を得るには、グーグルで検索してください。

これらの INSERT コマンドをファイルに入れ、ID に基づいて従業員の姓名を返すために提示したコードをinsertskill.php使用して別のコマンドを作成し、それを JavaScript関数で使用する必要があります。データを取得するために呼び出されるファイルには意味がありません。fetchName.php$.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!
于 2013-03-07T14:59:25.310 に答える