2014-11-12 3 views
1

У меня есть страница с тремя формами, и на этих формах есть отдельные переменные. Страница позволяет пользователю вводить данные, и они будут вставлены в базу данных MySQL для просмотра. У меня есть сценарий:JQuery Ajax Вставка данных в базу данных

Редактировать: Я также знаю, что mySql_ устарел, но для примера он работает нормально.

Редактирование 2: я знаю, что вы можете вставлять, но на данный момент это довольно неуместно, я думаю, что это проблема с использованием текстовой области вместо простого ввода.

Редактировать 3: Это просто опечатка (трахается ради). Был длинный день

 $("#finishButton").click(function(e) { // store final value and execute script to insert into DB. On success, switch to success page 
     var commentsValid = $('#commentsDetailsForm').valid(); 
     if (commentsValid) { 
      comments = document.getElementById('commentsInput').value; 
      e.preventDefault(); 
      $.ajax({ 
      type: "POST", 
      url: 'insert.php', 
      data: 'forenameInput=' + forename + '&surnameInput=' + surname + '&emailInput=' + email + '&telephoneInput=' + telephone + '&genderInput=' + gender + '&dobInput=' + dob + '&commentInput=' + comments, 
      success: function (data) { 
       if (data == "Error") { 
       $("#error").show(); 
       $("#processing").hide(); 
       } else { 
       window.location.href = "success.php"; 
       } 
      } 
      }); 
     } else { 

     } 
     }); 

Это предназначено для хранения всех деталей в базе данных. Однако, как бы то ни было, он сохраняет все детали в базе данных, кроме комментариев (конечная переменная). Могу ли я закончить утверждение данных неправильно, есть ли что-то еще принципиально неправильное?

PHP скрипт:

<?php 
// Connection Details 
$servername = "localhost"; 
$username = "root"; 
$password = "user10"; 
$dbname = "test"; 

// Create connection 
$conn = mysql_connect($servername, $username, $password); 

// Check connection 
if (!$conn) { 
    die("Connection failed: " . mysql_connect_error()); 
} 

// Select database 
mysql_select_db($dbname,$conn); 

// Store posted data in variables 
$forename = $_POST['forenameInput']; 
$surname = $_POST['surnameInput']; 
$email= $_POST['emailInput']; 
$telephone = $_POST['telephoneInput']; 
$dob = $_POST['dobInput']; 
$gender = $_POST['genderInput']; 
$comments = $_POST['commentsInput']; 

//Change date of birth so it's storable in mysql database 
$dobAlt = date('Y-m-d',strtotime($dob)); 

// Insert form information into database 
$sqlQuery = "INSERT INTO test (firstName, lastName, email, telephone, gender, dob, comments) VALUES ('$forename','$surname','$email','$telephone','$gender','$dobAlt', '$comments')"; 

// Check if query worked 
if (mysql_query($sqlQuery, $conn)) { 

} else { 
    echo "Error: " . $sql . "<br>" . mysql_error($conn); 
} 

// Close db 
mysql_close(); 

?> 

HTML:

<form id = "commentsDetailsForm" name = "commentsDetailsForm" method = "post"> 
<label for "commentsInput" id = "labels"> Comments </label> 
<br>     
<textarea id = "commentsInput" rows= "2" name = "commentsInput" class = "input-block-level"></textarea> 
<br> 
<div id = "registrationButtonWrapper"> 
    <button id = "finishButton" class = "insertDetailsFinal" name = "finish"> finish > </button> 
</div> 
</form> 

Вы также можете видеть, что это работает на http://chriswaszczuk.me/jobTest/ (вы должны заполнить форму, чтобы увидеть базу данных).

+0

Наблюдали ли вы запрос AJAX, чтобы убедиться, что замечания направляются к сервер? –

+0

Когда вы собираете свои данные для своего вызова Aax, вы используете 'commentInput', но вы ищете' $ _POST ['commentsInput'] '. Ваш код также широко открыт для атаки SQL-инъекций. –

ответ

1

У вас есть опечатка - все.

JS

'&commentInput=' + comments - commentInput - сингулярный

PHP

$comments = $_POST['commentsInput']; - commentsInput - множественное

+0

Знал, это было бы что-то чертовски глупо. Спасибо за помощь и приятное место. –

+0

Ха-ха, я тренировался, чтобы вместо этого чувствовал облегчение, вместо того, чтобы смущаться, когда это что-то глупое. Если я потрачу не более 30 минут, боюсь с этим: P – elzi

0

Проблема, вероятно, в том, что значение содержит символы, которые недопустимы в URL-адресах.

Вы должны убедиться, что все переменные правильно закодированы:

'&commentInput=' + encodeURIComponent(comments) 

Это относится ко всем переменным.

Кроме того, у вас есть проблема с внедрением sql. Вы должны переключиться на PDO или mysqli и использовать подготовленные инструкции.

Смежные вопросы