Я хотел бы спросить, как проверить, существует ли уже пользователь, и если пользователь уже существует в базе данных, sweetalert должен появиться с подробностями о том, что пользователь уже существует, я уже построил код, но я думаю, что ошибаюсь поскольку, когда я его выполнил, он временно добавляется в таблицу, а после обновления страницы он исчезает.
Обновлено: данные вставляются, если studentNumberId еще не доступен в базе данных, а оператор else, который должен срабатывать, когда пользователь уже существует в базе данных, не запускается.
addUser.js
$(document).ready(function(){
$('#addStudent').click(function(e){
e.preventDefault();
Swal.fire({
title: "Are you sure?",
text: "New student will be added added!",
icon: "success",
showCancelButton: true,
allowEscapeKey : false,
allowOutsideClick: false
}).then((result) => {
if (result.isConfirmed) {
var valid = this.form.checkValidity();
if (valid){
// The studentNumberId should be the basis whether to know if the user is already existing
var studentNumberId = "studentNumberId"+$('#studentNumberId').val();
var studentFullName = $('#studentFullName').val();
var studentPassword = $('#studentPassword').val();
var studentEmail = $('#studentEmail').val();
var studentYearBlock = $('#studentYearBlock').val();
e.preventDefault()
$.ajax({
type: 'POST',
url: 'includes/model_addStudent.php',
data: {studentNumberId: studentNumberId,studentFullName: studentFullName,studentPassword: studentPassword,studentEmail: studentEmail,
studentYearBlock: studentYearBlock},
success: function(data){
// I tried to compare if the user is already existing via values of 1 and 0 and echo'ed it out on the server-side
if (data == "1"){
$('#tbl_manageStudents').append(`
<tr>
<td>${studentNumberId}</td>
<td>${studentFullName}</td>
<td>${studentEmail}</td>
<td>${studentYearBlock}</td>
</td>
<td>
<input type = "submit" name = "viewStudents" id = "viewStudents" value = "View" class = "btn btn-info"
data-toggle = "modal" data-target = "#viewExistingStudents<?php echo $row["ID"];?>
<input type = "submit" name = "deleteRecord" id = "deleteRecord" value = "Delete" class = "btn btn-danger"
data-toggle = "modal" data-target = "#deleteSelectedStudent<?php echo $row["ID"];?>
</td>
`);
// swal if the user was successfully added
Swal.fire({
title: "Successfully Added!",
text: "New student has been added!",
icon: "success"
}).then((result) => {
if (result.isConfirmed) {
$('#addModalStudent').modal('hide').find("input").val('');
}
});
}
else {
// swal if the adding failed.
Swal.fire({
title: "Adding Failed",
text: "Student Already Existing",
icon: "warning"
}).then((result) => {
if (result.isConfirmed) {
$('#addModalStudent').modal('hide').find("input").val('');
}
});
}
},
error: function(xhr, thrownError, ajaxOptions){
Swal.fire({
title: xhr,
text: thrownError,
icon: "info"
})
}
});
}
else {
Swal.fire({
title: "Error!",
text: "Invalid Form",
icon: "warning"
});
}
}
else {
Swal.fire(
'No Changes!',
'No New Student has been added.',
'info'
)
}
});
});
});
а это моя серверная часть ...
addUser.php
<?php
if (isset($_POST)) {
include 'connection.php';
$student_id = $_POST['studentNumberId'];
$student_name = $_POST['studentFullName'];
$student_password = $_POST['studentPassword'];
$student_email = $_POST['studentEmail'];
$student_yearblock = $_POST['studentYearBlock'];
$sqlChecker = "SELECT student_id FROM tbl_students WHERE student_id = ?;";
$stmtChecker = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmtChecker,$sqlChecker)){
echo "SQL Statement" . mysqli_stmt_error($stmtChecker);
}
else {
mysqli_stmt_bind_param($stmtChecker, "s", $student_id);
mysqli_stmt_execute($stmtChecker);
$getResult = mysqli_stmt_get_result($stmtChecker);
if ($getValue = mysqli_fetch_assoc($getResult) > 0){
echo "1";
}
else {
$sql = "INSERT INTO tbl_students(student_id,student_name,student_password,student_email,student_yrblock) VALUES (?,?,?,?,?);";
$stmt = mysqli_stmt_init($conn);
$stmtquery = mysqli_stmt_prepare($stmt,$sql);
if (!$stmtquery){
echo "Failed to add" . mysqli_stmt_error($stmt);
}
else {
mysqli_stmt_bind_param($stmt, "sssss", $student_id, $student_name, $student_password, $student_email, $student_yearblock);
mysqli_stmt_execute($stmt);
echo "0";
}
}
}
}
else {
echo 'No data found';
}
?>
Я пробовал эту логику, когда значение эха 1 было одним на стороне клиента, оно запускает оператор if, который сравнивает данные с 1, а в противном случае.
Похоже, что фактической вставки в базу данных не происходит. Можете ли вы проверить это, запустив свой код и заглянув прямо в базу данных?
@NicoHaase Оператор else не срабатывает, когда пользователь существует. внутри функции успеха, else часть if data == "1"
Если он не вставляется, значит, произошла ошибка. Посмотрите, как узнать фактическая ошибка mysqli.
Извините за путаницу, но я отредактировал свой пост, чтобы сделать его более понятным, спасибо.
Пожалуйста, внесите все пояснения в свой вопрос, отредактировав его. Также удалите ненужные части или объясните, как это связано с JS.
В вашем вопросе много кода. Вы должны выполнить базовую отладку, чтобы сузить проблему - по крайней мере, чтобы определить, в JS или PHP проблема.






Что точно не работает с данным кодом?