点击删除后$_GET['clothCatId']丢失引发未定义索引错误如何解决
问题原因
- 删除按钮的跳转链接仅携带了
delproduct参数,没有保留当前URL中的clothCatId参数,导致删除跳转后页面无法识别当前分类ID - 原有获取分类产品的条件判断逻辑存在错误,使用
||逻辑符,当clothCatId未传入时,第二个判断条件直接访问未定义的数组索引会触发报错
修复方案
步骤1:修改删除按钮链接,保留clothCatId参数
生成删除链接时,把当前页面的clothCatId拼接进URL,代码修改为:
<a onclick="return confirm('Are you sure to delete ?')" href="?delproduct=<?php echo $result['productId'];?>&clothCatId=<?php echo $_GET['clothCatId'];?>">Delete</a>
修改后跳转的URL会同时携带delproduct和clothCatId两个参数,不会丢失分类ID。
步骤2:修复获取产品列表的判断逻辑
把原有错误的||逻辑替换为更安全的!empty()判断,同时避免未定义索引报错:
// !empty会同时判断参数存在且不为空,不会触发未定义索引报错 if(!empty($_GET['clothCatId'])){ $id = $_GET['clothCatId']; $getProduct = $product->getAllProductByCategory($id); }
可选优化:删除完成后跳转避免重复提交
当前删除逻辑放在页面顶部,用户删除后刷新页面会重复触发删除操作,建议删除完成后主动跳转回当前分类的列表页,代码修改为:
if(isset($_GET['delproduct']) && !empty($_GET['clothCatId'])){ $id = $_GET['delproduct']; $delProduct = $product->delProductById($id); // 删除完成后跳转,避免刷新重复提交 header("Location: listProduct.php?clothCatId=".$_GET['clothCatId']); exit(); }
内容的提问来源于stack exchange,提问作者sudhasingh
相关产品推荐
相关产品推荐

