2016-11-17 80 views
1

我正試圖實現從網頁上的sql數據庫顯示的數據的批量操作功能。我已經將數據轉換爲html格式,我試圖添加一個複選框功能,用戶可以選擇任意數量的行,然後通過從下拉列表中選擇一個值來執行批量操作。刪除 - 並且所有選定的值將從數據庫中刪除。儘管在提交執行操作按鈕後獲取所選的複選框值,我仍然有點磕磕絆絆。我已經把我的嘗試放在了下面的代碼中 - 我收到了無效的foreach參數提供的錯誤消息。我很確定它與我的輸入循環有關。獲取n行數的複選框值

任何幫助將不勝感激!

//establish connection to database: 
     require 'DB.php'; 

     $query = mysql_query("SELECT * FROM names", $conn); 
     echo "<tr>"; 

     //echo results while rows of data remain... 
     while ($row = mysql_fetch_array($query)) { 
      echo '<tr><td>' . $row['NAME'] . '</td>'; 
      echo '<td><input type="checkbox" name="checked[' . $row['NAME'] . ']" value="' . $row['NAME'] .'"></td>'; 
     } 

     ?> 
     </tr> 
    </table> 
</div> 
</body> 
</html> 
<? 

if (isset($_POST['perform_action'])) { 

    //check checkbox values 
    foreach ($_POST['checked'] as $check) { 
     echo $check; 
    } 

    //do something with the values 
    if ($_POST['bulk_action'] == 'delete') { 
     echo "you chose to delete"; 
    } 
+0

嘗試'NAME = 「選中[ '$行[ '名稱']。'] []」'注意額外的'[] ' – Blinkydamo

回答

0
if (isset($_POST['perform_action'])) { 
$query = mysql_query("SELECT * FROM names", $conn); 
    while ($row = mysql_fetch_array($query)) { 
     if (isset($_POST["checked".$row['NAME']])){ 
      //hear you can do anything to your checked checkbox 

      } 

    } 
    } 
0

之前在發佈數據時,您需要確保它是存在的。

在你的代碼,如果你提交一個表單而沒有選擇任何複選框,你將面臨無效的foreach參數提供消息,所以你需要檢查現場$_POST['checked']的存在,那麼運行循環。

因此改變

foreach ($_POST['checked'] as $check) { 
    echo $check; 
} 

//check checkbox values 
    if(isset($_POST['checked'])){ 
    foreach ($_POST['checked'] as $check) { 
     echo $check; 
    } 
    }