我无法使用PHP和Ajax更新mysql表。
问题是,当我按下删除按钮时,它仅重定向到主页,而对MYSQL数据没有任何作用。
HTML
<tbody>
<?php
if($qry->prepare("SELECT * FROM `menus` WHERE `is_deleted` = 0")){
$qry->execute();
$result = $qry->get_result();
if($result->num_rows > 0){
while($row = $result->fetch_array()){
?>
<tr>
<td><?= $row['menu_code'] ?></td>
<td><?= $row['menu_name'] ?></td>
<td><?= $row['menu_desc'] ?></td>
<td><?= $row['menu_type'] ?></td>
<!--<td><?= $row['menu_code'] ?></td>-->
<td><?= $row['menu_price'] ?></td>
<!--<td><?= $row['sizes'] ?></td>-->
<td>
<input type="submit" class="btn btn-sm btn-info" value="View" >
<form method="POST">
<input type="submit" id="delMenu" class="btn btn-sm btn-danger" value="Delete" >
<input type='hidden' id="delID" value=" <?php echo $row['menu_id'];?>" name="iduse">
</form>
</td>
</tr>
<?php
}
}
}
?>
</tbody>
DeleteMenu.php
<?php
include '../../configurations/config.php';
$qry = $con->stmt_init();
$iduse=$_POST['iduse'];
$sqlCode="UPDATE menus SET is_deleted = 1 WHERE menu_id = $iduse";
if($qry->prepare($sqlCode)){
$qry->execute();
echo json_encode(array(
"status" => 200,
));
} else {
echo json_encode(array(
"status" => 400
));
}
Ajax
$(document).on('click', '#delMenu', function(){
var id = $('#delID').value();
var ask = confirm('Are you sure you want to delete this item?');
$.ajax({
url: base_url() + "../functions/DeleteMenu.php",
method:"POST",
data: {'menu_id' : id,
'is_deleted' : '1'},
dataType: 'json',
cache: false,
success:function(result){
if(result.status == 200){
alert('Successfully removed!');
$('#content_load').load('views/menus');
} else {
alert('Has not removed!');
}
},
error:function(result){
//alert('Fail');
console.log(result);
}
});
});
每当我按下“删除”按钮时,我需要将菜单表上的“ is_deleted”列更改为1,以便将其隐藏。我认为我的php操作或ajax代码有问题,但是我很难指出来。任何解释或帮助将不胜感激。
答案 0 :(得分:1)
首先,您需要通过添加以下内容来阻止表单提交:
$(document).on('click', '#delMenu', function(e) {
e.preventDefault();
// ...
}
下一步..您的ajax请求结构是:
{
'menu_id' : id,
'is_deleted' : '1'
}
因此在php中,请使用menu_id
而不是iduse
:
$iduse = $_POST['menu_id'];
您必须对其余的代码逻辑进行故障排除,因为似乎存在多个错误,并且您可能会发现更多错误。
希望有帮助
答案 1 :(得分:0)
您同时使用表单和Ajax来更新值。删除表单标签,只使用ajax。尝试如下删除表单标签
<tbody>
<?php
if($qry->prepare("SELECT * FROM `menus` WHERE `is_deleted` = 0")){
$qry->execute();
$result = $qry->get_result();
if($result->num_rows > 0){
while($row = $result->fetch_array()){
?>
<tr>
<td><?= $row['menu_code'] ?></td>
<td><?= $row['menu_name'] ?></td>
<td><?= $row['menu_desc'] ?></td>
<td><?= $row['menu_type'] ?></td>
<!--<td><?= $row['menu_code'] ?></td>-->
<td><?= $row['menu_price'] ?></td>
<!--<td><?= $row['sizes'] ?></td>-->
<td>
<input type="submit" class="btn btn-sm btn-info" value="View" >
<input type="submit" id="delMenu" class="btn btn-sm btn-danger" value="Delete" >
<input type='hidden' id="delID" value="<?php echo $row['menu_id'];?>" name="iduse">
</td>
</tr>
<?php
}
}
}
?>
</tbody>
并在Delmenu.php中,使用ajax传递的属性。
$iduse=$_POST['menu_id'];
答案 2 :(得分:0)
使用此代码更新文件DeleteMenu.php
<?php
include '../../configurations/config.php';
$qry = $con->stmt_init();
$iduse=$_POST['menu_id'];
$sqlCode="UPDATE menus SET is_deleted = 1 WHERE menu_id = $iduse";
if($qry->prepare($sqlCode)){
$qry->execute();
echo json_encode(array(
"status" => 200,
));
} else {
echo json_encode(array(
"status" => 400
));
}
因为您要在帖子类型变量中发送“ menu_id”,并且没有名称为“ iduse”的帖子
这是您使用post方法进行ajax调用的代码
method:"POST",
data: {'menu_id' : id,
is_deleted' : '1'},
因此您可以在DeleteMenu.php中将此数据用作$ _POST ['menu_id']和$ _POST ['is_deleted']。
在提交表单后,使用preventDefault
删除重定向event.preventDefault();
答案 3 :(得分:0)
id
属性。2。 AJAX表单:
$(document).on('click', '#delMenu', function(){
var id = $('#delID').value();
var ask = confirm('Are you sure you want to delete this item?');
$.ajax({
url: base_url() + "../functions/DeleteMenu.php",
method:"POST",
data: "menu_id="+id + "&is_deleted="+"1",
//dataType: 'json', /* NO NEED FOR THIS */
//cache: false, /* NO NEED FOR THIS */
success:function(result){
console.log(result); /* check console and see whats the error*/
if(result.status == 200){
alert('Successfully removed!');
$('#content_load').load('views/menus');
} else {
alert('Has not removed!');
}
},
error:function(result){
//alert('Fail');
console.log(result);
}
});
return false; /* added so that your form submits with ajax*/
});