Php 当我在删除一个产品后刷新页面时,XML列表中的另一个产品将被删除

Php 当我在删除一个产品后刷新页面时,XML列表中的另一个产品将被删除,php,xml,forms,Php,Xml,Forms,当我单击某个产品的“删除”链接时,它会根据其关联id从我的XML产品列表中删除该产品。但当我在删除一个产品后刷新页面时,它会删除另一个产品。你能帮我一下我做错了什么吗?为什么每次我刷新页面时都要删除产品 提前谢谢你的建议 这是我一直与之合作的公司: <?php $products = simplexml_load_file('data/product.xml'); if(isset($_GET['action'])){ $products = simplexml

当我单击某个产品的“删除”链接时,它会根据其关联id从我的
XML
产品列表中删除该产品。但当我在删除一个产品后刷新页面时,它会删除另一个产品。你能帮我一下我做错了什么吗?为什么每次我刷新页面时都要删除产品

提前谢谢你的建议

这是我一直与之合作的公司:

<?php
   $products = simplexml_load_file('data/product.xml');

   if(isset($_GET['action'])){
       $products = simplexml_load_file('data/product.xml');
       $id = $_GET['id'];
       $index = 0;
       $i = 0;

       foreach ($products->product as $product){
           if($product['id']==$id){
               $index = $i;
               break;
           }
           $i++;
       }
       unset($products->product[$index]);
       file_put_contents('data/product.xml', $products->asXML());
   }

   ?>
<table cellpadding="2" cellspacing="2" broder="11">
   <tr>
      <th>Id</th>
      <th>Name</th>
      <th>Option</th>
   </tr>
   <?php foreach ($products->product as $product) { ?>
   <tr>
      <td><?php echo $product['id']; ?></td>
      <td><?php echo $product->name; ?></td>
      <td>
         <a href="index.php?action=delete&id=<?php echo $product['id']; ?>"
            onclick="return confirm('Are you sure?')">Delete</a>
      </td>
   </tr>
   <?php } ?>
</table>

身份证件
名称
选项
XML文件格式为:

<?xml version="1.0" encoding="UTF-8"?>
<products>
    <product id="1">
        <name>Product 1</name>
    </product>
    <product id="2">
        <name>Product 2</name>
    </product>
    <product id="3">
        <name>Product 3</name>
    </product>
</products>

产品1
产品2
产品3
尝试以下代码

foreach ($products->product as $product){
       if($product['id']==$id){
           $index = $i;
           break;
       }
       $i++;
   }
   unset($products->product[$index]);

to 
   $i = 0;
  foreach ($products->product as $key=>$product){
       if($product['id']==$id){
          unset($products->product[$i]);
           break;
       }
        $i++;
   }
试试下面的代码

foreach ($products->product as $product){
       if($product['id']==$id){
           $index = $i;
           break;
       }
       $i++;
   }
   unset($products->product[$index]);

to 
   $i = 0;
  foreach ($products->product as $key=>$product){
       if($product['id']==$id){
          unset($products->product[$i]);
           break;
       }
        $i++;
   }

身份证件
名称
选项

身份证件
名称
选项


我想您需要指定要删除的项目,而不仅仅是操作,例如检查项目$\u GET['id'],不仅仅是$\u GET['action'],谢谢,但即使我将其从
$\u GET['action']
更改为
$\u GET['id']
,刷新后它仍会返回删除另一个项目的相同结果:(@LeoTahkupdate xml file format updated the xml@Kranthiu updated ans try with that think您需要指定删除的项目,而不仅仅是操作,例如检查项目$\u GET['id'],而不仅仅是$\u GET['action']谢谢,但即使我将其从
$\u GET['action']
更改为
$\u GET['id']
,刷新后会返回与删除另一项相同的结果。(@LeoTahkupdate xml file format updated the xml@kranthiuded ans尝试使用它谢谢回答,但删除功能现在无法使用此代码。它不会删除任何元素。哇!这很好。但这里唯一的问题是,如果两个产品(使用不同的名称)具有相同的id,刷新后会再次删除另一个。这是因为我们正在根据其
id
删除子项吗?在这种情况下,除了为每个产品提供唯一的id之外,还有什么可能的解决方案?感谢您的努力。:)1.在删除id为的send product name和add-in if条件时。2.为产品添加一些其他唯一属性,如id。是否可以更新该场景的代码?这将非常有用。添加了一个ans检查itThanks以获取答案,但删除功能现在无法使用此代码。它不可用删除任何元素。哇!这很好。但这里唯一的问题是,如果两个产品(名称不同)如果具有相同的id,则在刷新后会再次删除另一个。这是因为我们正在根据子产品的
id
删除子产品吗?在这种情况下,除了为每个产品提供唯一的id之外,还有什么可能的解决方案?感谢您的努力。:)1.在删除“同时发送产品名称”和“添加id为的if条件”时。2.为产品添加一些其他唯一属性,如id。能否请您更新该方案的代码?这将非常有用。再添加一个并检查它非常感谢。这是一个很好的教训。我非常感谢您的努力。:)非常感谢你。这是一个很好的教训。我真的很感谢你的努力