2011-10-20 91 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,然後添加了一個閉合窗體標籤,它工作正常。請更新確切的代碼,它可以修復? –