Php 删除多行函数中未定义的变量和索引

Php 删除多行函数中未定义的变量和索引,php,Php,编辑:我添加了这个 如果(isset($_POST['delete'])和&isset($_POST['checkbox'])) (从下面的答案中获得,但似乎asnwer已经不在了) 现在,未定义的变量和索引错误消失了…但现在的问题是,当我尝试删除时,需要检查并单击删除按钮两次以删除选定的行 <form name="frmSearch" method="post" action="insert-add.php"> <table width="600" border="1"

编辑:我添加了这个

如果(isset($_POST['delete'])和&isset($_POST['checkbox'])) (从下面的答案中获得,但似乎asnwer已经不在了)

现在,未定义的变量和索引错误消失了…但现在的问题是,当我尝试删除时,需要检查并单击删除按钮两次以删除选定的行

  <form name="frmSearch" method="post" action="insert-add.php">

<table width="600" border="1">
  <tr>
    <th width="50"> <div align="center">#</div></th>
    <th width="91"> <div align="center">ID </div></th>
    <th width="198"> <div align="center">First Name </div></th>
    <th width="198"> <div align="center">Last Name </div></th>
    <th width="250"> <div align="center">Mobile Company </div></th>
    <th width="100"> <div align="center">Cell </div></th>
    <th width="100"> <div align="center">Workphone </div></th>
    <th width="100"> <div align="center">Group </div></th>
  </tr>
    </form>
<?

    echo "<form name='form1' method='post' action=''>";

while($objResult = mysql_fetch_array($objQuery))
{


    echo "<tr>";
    echo "<td align='center'><input name=\"checkbox[]\" type=\"checkbox\" id=\"checkbox[]\" value=\"$objResult[addedrec_ID]\"></td>";
    echo "<td>$objResult[addedrec_ID] </td>";
    echo "<td>$objResult[FirstName]</td>";
    echo "<td>$objResult[LastName] </td>";
    echo "<td>$objResult[MobileCompany] </td>";
    echo "<td>$objResult[Cell] </td>";
    echo "<td>$objResult[WorkPhone] </td>";
    echo "<td>$objResult[Custgroup] </td>";

   echo "</tr>";

}


 echo "<td colspan='7' align='center'><input name=\"delete\" type=\"submit\" id=\"delete\" value=\"Delete\">";

 if (isset($_POST['delete']) && isset($_POST['checkbox'])) // from button name="delete"
 {
 $checkbox = ($_POST['checkbox']); //from name="checkbox[]"
     $countCheck = count($_POST['checkbox']);

 for($d=0;$d<$countCheck;$d++)
     {
         $del_id  = $checkbox[$d];

 $sql = "DELETE from UserAddedRecord where addedrec_ID = $del_id";

 $result2=mysql_query($sql)  or trigger_error(mysql_error());;;

     }
         if($result2)
     {  
          $fgmembersite->GetSelfScript();
         }
         else
         {
 echo "Error: ".mysql_error();
         }
 }
  echo "</form>";

#
身份证件
名字
姓
移动公司
单间牢房
工作电话
组

第一个通知是由于没有$\u POST[“checkbox”]变量。如果您使用的是AJAX,请使用firebug检查您的查询,以检查是否发送了checkbox变量

第二个未定义的是来自您的嵌套。请参见下面的示例:

$foo = 0
if($foo ==1){
    $bar = 5;
}
if($bar == 2){
    //Blah
}

如果你要运行,那么$bar将永远不会被设置,因此通知。由于$countCheck设置为0,而$u POST[“checkbox”]未设置,则for循环从未运行,因此$result2从未设置。

您的问题是,您有一个表单嵌套在另一个表单中

  <form name="frmSearch" method="post" action="insert-add.php">

<> p>中间有

    echo "<form name='form1' method='post' action=''>";
echo”“;
删除第二个,即“回声”的一个,即


除非关闭第一个表单,否则无法在其中启动另一个表单…

如果在查询之前
$delu
的值是多少?另外,您只是在请求SQL注入攻击。请发布您试图处理的HTML表单。@Michael谢谢您的回复,我用更完整的表单编辑了我的问题。@Inedia谢谢您的回复,我已经发布了我的表单。我想帮您,但这只是一堆完全非结构化的代码。首先考虑您想要完成的任务,创建代码的概念设计,然后开始编写代码。这会产生好的代码,每个人都可以阅读并帮助您…哦,对不起,我没有完全复制表单…事实上,我确实在第二个表单之前关闭了第一个表单。然后添加正确的代码?我还会更改$del_id=$checkbox[$d];应用intval类,这将强制它使用一个数字,因此您不必担心SQL注入。。所以它现在是$del_id=intval($checkbox[$d]);您可以添加错误报告(E|u error | E|u WARNING | E|u PARSE);在PHP文件的顶部,在open PHP标记下面,忽略未初始化的变量和其他类似错误。我删除了第二个表单标记和for数组,因为我没有您的数据库,使其成为基本HTML,然后添加了一个结束表单标记,效果很好。请使用准确的代码进行更新,它可以被修复?在您的新代码中,使用2个表单标签是没有意义的。删除TR下的结束表单标签,删除您回显的打开表单标签。对不起,我现在需要离开,我明天会更新给您,保证。非常感谢你的回复。