サブミット・ボタンをクリックすると、データベースにuserIDを持つ新しい行が作成されますが、ユーザー名はデータベースに送信されません。現在私のloginInfoテーブルには、userID(自動生成および増分)、ユーザ名、およびパスワードの3つのカラムがあります。私は自分のエラーがnewuser.phpファイルにあると信じています。私はその中で何をすべきか分かりません。私のFirefoxで新しいレコードの挿入:行はデータベースに作成されますが、値はサブミットされません
<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());
}
?>
私が見るネットコンソールの下でこの出力は値である
Parameters
name
testing
Source
name=testing
ドキュメントのWebサイトから名前のテキストボックスにD:それは文字列なのでhttps://vitalets.github.io/x-editable/docs.html#newrecord
私はコードを変更しましたが、まだ動作しません。 post.phpとnewuser.phpのページが正しく設定されているとは思いません。ユーザーが多くの列を更新できるので、列名をハードコードできません。 – noname
クエリにエラーが発生していますか? 'echo mysqli_error($ con);'は何を表示しますか? – Barmar
私はmysqli_prepareに '$ con'引数を付けなかったことに気付いたので、修正された構文を試してみてください。 – Barmar