2016-04-09 63 views
0

我正在嘗試使用圖書館管理應用程序來練習PHP,我的頁面是爲了訂購一本書可以多次訂購,但不應該在一頁上的兩個不同選擇中選擇相同的書。在訂單頁面上,我有賬面價值多項選擇的下拉列表中,從相同的數據庫來:在PHP中避免重複ID

<form method="POST" target="adduserbooks.php"> 
    <select name="user"> 
    <option value="1">Tony</option> 
    <option value="2">Gary</option> 
    <option value="3">Martin</option> 
    <option value="4">Austin</option> 
    <option value="5">Mark</option> 
    </select> 

    <select name="book[]"> 
    <option value="1">Math</option> 
    <option value="2">Geography</option> 
    <option value="3">Science</option> 
    <option value="4">Spanish</option> 
    <option value="5">English</option> 
    </select> 

    <select name="book[]"> 
    <option value="1">Math</option> 
    <option value="2">Geography</option> 
    <option value="3">Science</option> 
    <option value="4">Spanish</option> 
    <option value="5">English</option> 
    </select> 

    <select name="book[]"> 
    <option value="1">Math</option> 
    <option value="2">Geography</option> 
    <option value="3">Science</option> 
    <option value="4">Spanish</option> 
    <option value="5">English</option> 
    </select> 
</form> 

並增加他們在數據庫表adduserbooks.php頁上:

$userID = $_POST['user']; 
    foreach($_POST['book'] as $key=>$item_eid){ 
    $bookID = intval($_POST['book'][$key]); 
    mysql_query ("Insert INTO user_books (bookID, userID) values ('$bookID', '$userID')") or die(mysql_error()); 
    } 

至於另一位專家建議在這裏,不能使用「INSERT IGNORE INTO」作爲prodID作爲UNIQUE,因爲這意味着以後的訂單不能用於已經輸入的prodID。所以,理想情況下,我需要檢查/比較SQL插入和退出頁面之前的循環,如果發現重複,則會出現一些錯誤。對此有何想法?

我的結構表如下:

CREATE TABLE IF NOT EXISTS user_books 
(
    ID int(11) NOT NULL AUTO_INCREMENT, 
    bookID int(11) NOT NULL, 
    userID int(11) NOT NULL, 
    added timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
) 
ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ; 
+3

可能的重複[在PHP中避免重複的ID](http://stackoverflow.com/questions/36518144/avoid-duplicate-ids-in-php) – Marcus

回答

1

如果有同樣的問題/問題的任何一個,我能夠通過使用array_unique()功能,它會自動只需添加重複記錄的第一行,並忽略所有解決laters,所以我的代碼變成了:

$userID = $_POST['user']; 
    foreach(array_unique($_POST['book']) as $key=>$item_eid){ 
    $bookID = intval($_POST['book'][$key]); 
    mysql_query ("Insert INTO user_books (bookID, userID) values ('$bookID', '$userID')") or die(mysql_error()); 
    } 

我希望這將有助於任何人,因爲幫助別人應該是來這裏的目的,而不是製造問題。

+0

這真的幫了我。好工作。 –