2013-03-07 3 views
0

Хорошо, позвольте мне начать с того, что я любитель, поэтому вся ваша помощь действительно оценена.Нужна помощь при отправке данных моей формы в базу данных

ОК, у меня есть форма, называемая «skills.php», и в этой форме вы вводите следующие поля «Skills_ID», «Employee_ID», «First_name», «Last_name» и «Skill». Я использовал java, поэтому, когда вы выбираете employee_ID, поля имени изменяются на того, кто является сотрудником (связанным с таблицей сотрудников).

ОДНАКО, поскольку я добавил эту функцию, я не могу сохранить данные своей формы в моей базе данных. 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'])); 
?> 

Просто глядя на этот код IMN довольно ? я уверен, что, возможно, из случайно удалили кодировку, чтобы вставить его в базу данных, но я не знаю, как это исправить :(может кто-то помочь высоко ценится Спасибо заранее

+0

Я хочу добавить его в таблицу Skills – user2108411

ответ

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 и создать еще один, может быть fetchName.php или что-то подобное, с кодом, который вы представили вернуть имя и фамилию для сотрудника на основе его идентификатора, и использовать его в ваш JavaScript $.change() функция. Для получения данных не имеет значения для файла с именем insertskill.php.

И забыл указать, что вы ожидаете JSON в вашей команде $.post(). Вместо этого:

$.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 (чтобы получить имена для формы) и когда он вызывается для вставки данных. Так что на вашем Javascript (jQuery, я думаю), вы можете изменить URL-адрес:

$.post("insertskill.php?ajax" 

а затем вставить.php do:

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... 
    } 
Смежные вопросы