2011-10-20 50 views
0

编辑:我添加了这个未定义的变量和指标在删除多行功能

如果(isset($ _ POST [ '删除'])& & isset($ _ POST [ '复选框'])) (从获得下面的答案,但似乎asnwer不见了)

现在的未定义varialbe和索引错误已经消失...但现在的问题是,当我尝试删除,它需要检查并单击删除按钮两次删除选定的行...

<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>"; 

感谢您的回复。

+1

在查询之前'$ del_if'的值是多少?此外,你只是要求在那里发生SQL注入攻击。 – millimoose

+0

请发布您正在尝试处理的HTML表单。 –

+0

@Michael感谢您的回复,我用更完整的表格编辑我的问题。 –

回答

0

第一个通知是由于没有$ _POST [“复选框”]变量。如果您使用AJAX,请使用萤火虫检查您的查询以检查您是否发送复选框变量。

第二个未定义来自您的嵌套。看到我下面的例子:

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

如果你要运行,那么$ bar永远不会被设置,因此通知。由于没有设置$ _POST [“checkbox”],所以$ countCheck设置为0,那么for循环永远不会运行,因此$ result2从不设置。

0

你的问题,你有一个嵌套在另一个窗体内的窗体。

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

,并在中间你有

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

取下第二之一,“回声”“编一个是...

除非您关闭第一个表格,你不能在其内部启动另一个...

+0

哎呀抱歉,我没有完全复制表格......实际上我在第二个表格之前关闭了第一个表格。 –

+0

然后添加正确的代码?我也会更改$ del_id = $ checkbox [$ d];以应用intval类,这将强制它的数字,所以你不必担心SQL注入。所以它现在是$ del_id = intval($ checkbox [$ d]);并且您可以添加error_reporting(E_ERROR | E_WARNING | E_PARSE);到您的PHP文件的顶部,在打开的PHP标记下面忽略那种无形的可变及其他类错误。 –

+0

我删除了第二个窗体标签和for数组,因为我没有数据库,使它成为基本的HTML,然后添加了一个闭合窗体标签,它工作正常。请更新确切的代码,它可以修复? –