Итак, после того, как я нажму кнопку «Отправить», в моей базе данных с идентификатором пользователя будет создана новая строка, но имя пользователя не будет отправлено в базу данных. В настоящее время моя таблица loginInfo, которую я представляю, имеет два столбца: userID (автоматически сгенерированный и увеличенный), имя пользователя и пароль. Я считаю, что моя ошибка в файле newuser.php. Я не уверен, что с ней делать.Вставка новой записи: Строка создается в базе данных, но значения не отправляются
<td><a href="#" class="myeditable editable editable-click editable-empty" id="new_username" data-type="text" data-name="name" data-original-title="Enter username">Empty</a></td>
Кроме того, в том же файле под скриптами
$.fn.editable.defaults.mode = 'inline';
//init editables
$('.myeditable').editable({
url: 'post.php' //this url will not be used for creating new user, it is only for update
});
//make username required
$('#new_username').editable('option', 'validate', function(v) {
if(!v) return 'Required field name!';
});
//automatically show next editable
$('.myeditable').on('save.newuser', function(){
var that = this;
setTimeout(function() {
$(that).closest('tr').next().find('.myeditable').editable('show');
}, 200);
});
$('#save-btn').click(function() {
$('.myeditable').editable('submit', {
url: 'newuser.php',
ajaxOptions: {
type: 'POST',
dataType: 'json' //assuming json response
},
success: function(data, config) {
if(data && data.id) { //record created, response like {"id": 2}
//set pk
$(this).editable('option', 'pk', data.id);
//remove unsaved class
$(this).removeClass('editable-unsaved');
//show messages
var msg = 'New user created! Now editables submit individually.';
$('#msg').addClass('alert-success').removeClass('alert-error').html(msg).show();
$('#save-btn').hide();
$(this).off('save.newuser');
} else if(data && data.errors){
//server-side validation error, response like {"errors": {"username": "username already exist"} }
config.error.call(this, data.errors);
}
},
error: function(errors) {
var msg = '';
if(errors && errors.responseText) { //ajax error, errors = xhr object
msg = errors.responseText;
} else { //validation error (client-side or server-side)
$.each(errors, function(k, v) { msg += k+": "+v+"<br>"; });
}
$('#msg').removeClass('alert-success').addClass('alert-error').html(msg).show();
}
});
});
Post.php
include('connect.php');
sleep(1);
$pk = $_post['pk'];
$un=$_POST['name'];
$value1 = $_POST['value'];
if(!empty($value1)) {
$sql =("UPDATE loginInfo
SET $un=$value1
WHERE userID='$pk'");
mysqli_query($con, $sql);
//here, for debug reason we just return dump of $_POST, you will see result in browser console
print_r($_POST);
}
else {
header('HTTP/1.0 400 Bad Request', true, 400);
echo "This field is required!";
}
newuser.php
$pk = $_post['pk'];
$un=$_POST['name'];
$value1 = $_POST['value'];
try {
$sql =("INSERT INTO loginInfo(username,password)
VALUES ('a','b')");
mysqli_query($con, $sql);
} catch (Exception $e) {
print($e->__toString());
}
?>
В моем светлячок под чистой консоли я вижу этот результат, который является значением I entere d в текстовое поле имени
Parameters
name
testing
Source
name=testing
документов с сайта: https://vitalets.github.io/x-editable/docs.html#newrecord
Спасибо, что я изменил свой код, но он все еще не работает. Я не думаю, что мои страницы post.php и newuser.php настроены правильно. Я не могу указать имя столбца, потому что пользователь может обновлять многие столбцы. – noname
Является ли запрос получения ошибки? Что означает 'echo mysqli_error ($ con);' show? – Barmar
Я только заметил, что я оставил аргумент '$ con'' mysqli_prepare', поэтому попробуйте исправленный синтаксис. – Barmar