#php #jquery #ajax #checkbox #sql-delete
#php #jquery #ajax #флажок #sql-удалить
Вопрос:
я пытаюсь удалить значения с помощью флажка с помощью вызова ajax, может ли кто-нибудь мне помочь.
не удалось найти ошибку и еще одну вещь, это шаблон, и у меня есть функция проверки всех встроенных, поэтому нужно изменить любой встроенный код для флажка, это моя форма листинга:
<form id="stafflistForm">
<input type="hidden" name="checkedids" value="<?php echo $staffResults['id_staff']; ?>">
<button id="deleteChecked"><i class="fa fa-trash-o"></i></button>
</form>
Это мой Ajax-скрипт:
<script language="JavaScript">
$("#deleteChecked").click(function()
{
$("#delshowMessageDiv").hide();
$("#delshowMessage").html('');
$.ajax({
url: "staffcontroller.php",
method: "POST",
data: { delData : $("#stafflistForm").serialize(), 'action':'delete'},
dataType: "json",
success: function (response) {
if(response["success"]==true)
{
$("#delshowMessageDiv").hide();
$("#delshowSuccessMessageDiv").show();
$("#delshowSuccessMessage").html(response["message"]);
}else{
$("#delshowMessageDiv").show();
$("#delshowMessage").html(response["message"]);
}
},
error: function (request, status, error) {
$("#hshowMessageDiv").show();
$("#hshowMessage").html("OOPS! Something Went Wrong Please Try After Sometime!");
}
});
return false;
});
</script>
И это моя страница контроллера:
else if($_REQUEST['action']=='delete'){
$delids=explode(",",$_REQUEST["checkedids"]);
$count=count($delids);
for($i=0;$i<$count;$i )
{
$delQuery= $conn->query("DELETE FROM os_staff WHERE id_staff=".$delids[$i]);
}
if($delQuery){
$response['message'] = "<strong>Success!</strong>Staff Deleted Successfully.";
$response['success'] = true;
}else{
$response['message'] = "<strong>Warning!</strong> Staff Not Deleted.Please Check Carefully..";
$response['success'] = false;
}
echo json_encode($response);
exit;
}
Комментарии:
1. Не используйте атрибут html
id
, если вы используете его многократноid="deleteChecked"
. Вместо этого используйте селектор класса или атрибут данных. Это должно помочь решить вашу проблему.2. Вы можете использовать предложение WHERE IN в SQL:
$delQuery= $conn->query("DELETE FROM os_staff WHERE staff IN ('9','7','6'));
просто измените значение ваших форматов на этот формат (‘9′,’7′,’6’) вы можете использовать функцию implode()
Ответ №1:
Прежде всего: не используйте идентификатор атрибута html, если вы используете его multipli id =»deleteChecked». Вместо этого используйте селектор класса или атрибут данных.
Вот небольшой скрипт, который покажет вам, как вы можете улучшить свой код. Это должно помочь вам решить вашу проблему.
$(document).ready(function() {
$('.delete-user').on('click', function(e) {
// do here your ajax
// this is just example
$(this).parents('tr').remove();
});
});
.fa-trash-o {
padding: 3px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td>
<form class="stafflistForm">
<input type="hidden" name="checkedids" value="<?php echo $staffResults['id_staff']; ?>">
<button class="delete-user"><i class="fa fa-trash-o"></i></button>
</form>
</td>
<td>Tom</td>
</tr>
<tr>
<td>
<form class="stafflistForm">
<input type="hidden" name="checkedids" value="<?php echo $staffResults['id_staff']; ?>">
<button class="delete-user"><i class="fa fa-trash-o"></i></button>
</form>
</td>
<td>Peter</td>
</tr>
<tr>
<td>
<form class="stafflistForm">
<input type="hidden" name="checkedids" value="<?php echo $staffResults['id_staff']; ?>">
<button class="delete-user"><i class="fa fa-trash-o"></i></button>
</form>
</td>
<td>Son Goku</td>
</tr>
<tr>
<td>
<form class="stafflistForm">
<input type="hidden" name="checkedids" value="<?php echo $staffResults['id_staff']; ?>">
<button class="delete-user"><i class="fa fa-trash-o"></i></button>
</form>
</td>
<td>Gozilla</td>
</tr>
</table>
Комментарии:
1. Он также может использовать
$("button#deleteChecked").click(function()
Ответ №2:
PHP-скрипт должен установить правильный mime-тип через:
header('Content-type: application/json');
Кроме того,: Почему у вас есть отдельные DIV-контейнеры для сообщений об ошибках и успехах? Почему бы не иметь один div с обратной связью, который получает класс CSS, который выполняет форматирование (на основе ошибки или успеха).