2014-05-06 22 views
0

我有一個選擇框,用戶可以在其中選擇要連接到系統的文件。每個選中的文件都被插入到數據庫中。但是,如果他們取消選擇該文件,我希望它的行從數據庫中刪除。如果用戶選擇文件,我如何從數據庫中刪除以前選擇的文件?

如果不刪除該系統上附加到該用戶的所有文件並重新插入現在選擇的文件,我將如何刪除不再需要的以前選擇的文件?

<select name="choose_files[]" class="multi-select" multiple="" id="attach_files"> 
<?php 
    foreach ($files AS $file) { 
    echo '<option value="' . $file['id'] . '"'; 
    if ($file['id'] === $compared['file_id']) 
    { echo ' SELECTED';} 
    } 
    echo '>' . $file['originalFilename'] . '</option>'; 
    } ?> 
</select> 
+0

您還應該發佈處理此表單的'update'函數。 – lsouza

+0

尚未構建更新/刪除功能,如果我的描述過於模糊,那麼該代碼就是一個例證。 – Hybride

+0

你必須發送一些東西到服務器,否則什麼都不會改變。在php代碼中,您可以將發送的列表與數據庫中的*文件*列表進行比較。之後,您可以刪除標識的行。 –

回答

1

您可以使用array_diff()。例如:

$current_files = get_current_files(); 
$post_files = $_POST['choose_files']; 

$remove = array_diff($current_files, $post_files); 
$add = array_diff($post_files, $current_files); 

if (!empty($remove)) { 
    // remove these files from DB 
} 

if (!empty($add)) { 
    // add these files to DB 
} 
+1

謝謝,我的變量是在我的代碼反向 - 所以我的array_diff行爲像$ add而不是$刪除,反之亦然。 – Hybride

相關問題