1

私はコーディングが初めてなので、これは非常に難しいと言うところから始めます。また、主に私が本当に行き詰まっているため、最近いくつか質問しました。すべての助けが本当に感謝しています。

私は2つのテーブルを持っています。従業員 (Employee_ID、First_name、Last_name、Address など) およびトレーニング (Training_ID、Employee_ID、First_name、Last_name、Training_type)。

トレーニング テーブルには、従業員のトレーニング タイプを割り当てるために記入するフォームがあります。

OK 現在、従業員 ID のドロップダウン ボックスには、従業員テーブルからの従業員 ID の値があります。

ドロップダウン ボックスから値を選択したときに、フォームのテキスト フィールド (名と姓) を更新して、その employee_id の名前を表示したいと考えています。オンラインで検索しましたが、これを行う方法がわかりません。

以下は私のフォーム(php)を示しています

<html>
   <?php
      $con = mysql_connect("localhost","root","");
      if (!$con)
      {
         die('Could not connect: ' . mysql_error());
      }

      mysql_select_db("hrmwaitrose", $con);
   ?>
   <head>
      <link type="text/css" rel="stylesheet" href="style.css"/>
      <title>Training</title>
   </head>

   <body>
      <div id="content">  
      <h1 align="center">Add Training</h1>

      <form action="inserttraining.php" method="post">
         <div>
            <p>Training ID: <input type="text" name="Training_ID"></p>
            <p>Employee ID:<select id="Employee_ID">
            <?php
               $result = mysql_query("SELECT Employee_ID FROM Employee");
               while ($row = mysql_fetch_row($result)) {
                  echo "<option value=$row[0]>$row[0]</option>";
               }
            ?>
            </select>
            <p>First name: <input type="text" name="First_name"></p>
            <p>Last name: <input type="text" name="Last_name"></p>
            <p>
               Training required?
               <select name="Training">
                  <option value="">Select...</option>
                  <option value="Customer Service">Customer Service</option>
                  <option value="Bailer">Bailer</option>
                  <option value="Reception">Reception</option>
                  <option value="Fish & meat counters">Fish & meat counters</option>
                  <option value="Cheese counters">Cheese counters</option>
               </select>
            </p>
            <input type="submit">
         </form>
      </div>

   </body>
</html>

そして、これが送信ボタンが押されたときの私のphpコードです。

<?php
   $con = mysql_connect("localhost","root","");
   if (!$con)
   {
      die('Could not connect: ' . mysql_error());
   }

   mysql_select_db("hrmwaitrose", $con);

   $sql="INSERT INTO training (Training_ID, Employee_ID, First_name, Last_name, Training)
         VALUES
         ('$_POST[Training_ID]','$_POST[Employee_ID]','$_POST[First_name]','$_POST[Last_name]','$_POST[Training]')";


   if (!mysql_query($sql,$con))
   {
      die('Error: ' . mysql_error());
   }
   echo "1 record added";

   mysql_close($con);
?>

私はそれがJavaによって行われたと思いますか?よくわかりません。

4

2 に答える 2

3

あなたのビューファイル:

<?php
// First of all, don't make use of mysql_* functions, those are old
$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> <!-- You will need jQuery (or anyother javascript framework) to accomplish your goal cause you need ajax -->
        <title>Training</title>
    </head>

    <body>
        <div id="content">
            <h1 align="center">Add Training</h1>

            <form action="inserttraining.php" method="post">
                <div>
                    <p>
                        Training 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>
                        Training required?
                        <select name="Training">
                            <option value="">Select...</option>
                            <option value="Customer Service">Customer Service</option>
                            <option value="Bailer">Bailer</option>
                            <option value="Reception">Reception</option>
                            <option value="Fish & meat counters">Fish & meat counters</option>
                            <option value="Cheese counters">Cheese counters</option>
                        </select>
                    </p>
                    <input type="submit">
            </form>
        </div>
    <script type="text/javascript">
        $(function() { // This code will be executed when DOM is ready
            $('#Employee_ID').change(function() { // When the value for the Employee_ID element change, this will be triggered
                var $self = $(this); // We create an jQuery object with the select inside
                $.post("getEmployeeData.php", { Employee_ID : $self.val()}, function(json) {
                    if (json && json.status) {
                        $('#First_name').val(json.name);
                        $('#Last_name').val(json.lastname);
                    }
                })
            });
        })
    </script>
    </body>
</html>

getEmployeeData.php ファイル:

<?php
$pdo = new PDO("mysql:host=localhost;dbname=hrmwaitrose;charset=utf8", "root", "");

header("Content-Type:application/json; Charset=utf-8");

// As you can see, here you will have where Employee_ID = :employee_id, this will be
// automatically replaced by the PDO object with the data sent in execute(array('employee_id' => $_POST['Employee_ID']))
// This is a good practice to avoid SqlInyection attacks
$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']));

最後の提案: コードを正しくインデントします。すべての html タグを閉じます (<input />たとえば)

于 2013-03-01T15:03:38.607 に答える
1

簡単な方法では、ドロップダウン リストの onchange 属性でトリガーされる小さな ajax メソッド (たとえば jQuery を使用) を実装する必要があります。

$('select').change(function() {
    var choice = jQuery(this).val();
    $.ajax({
    url:'fakeurl.test.php',
    type:'POST'
    data : {'id' : choice},
    success : function(response) {
        $('input[name="First_name"]').val(response.firstname);
        $('input[name="Last_name"]').val(response.lastname);
    }
    });
});

そしてもちろん、あなたのPHPで

$id = $_POST['id'] ;
SELECT...WHERE employee_id = $id...
[...]
return json_encode(array(
     'lastname'=>$employee_lastname,
     'firstname'=>$employee_firstname
));
于 2013-03-01T14:55:35.867 に答える