ライブラリ管理アプリケーションで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 ;
[PHPで重複するIDを避ける](0120-919-03) – Marcus