2016-04-09 11 views
0

ライブラリ管理アプリケーションでPHPを実践しようとしていますが、私のページは1回限りの本を注文することができますが、 。 、ここでは別の専門家が示唆したように注文時にPHPで重複IDを避ける

$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()); 
    } 

<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ページ上のデータベーステーブルに追加:注文ページでは、私は同じデータベースからの簿価のための複数選択ドロップダウンを持っていますprodIDで "INSERT IGNORE INTO"を使用することはできません。これは、prodIDに既に入力されているため、後の注文を入れることができないためです。UNIQUEとなります。ですから、理想的には、重複が見つかった場合は、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を避ける](0120-919-03) – 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

これは本当に助けになりました。よくできました。 –

関連する問題