私のウェブサイトに小さな「ブックマーク」機能を作成しようとしました。ユーザーは、次のスクリプトを実行する「.bookmarkButton」をクリックできます。
<!--Add To Bookmarks-->
$(".bookmarkButton").click(function() {
var pid=$(this).closest('div').attr('id');
$('#noBookmark').hide();
$.post('bookmarks/addBookmark.php', 'rid=' + pid, function (addBookmark) {
$("#bookmarkResults").add(addBookmark);
});
});
「addBookmark.php」のコードは次のとおりです。
<?php
session_start();
if (isset($_SESSION['ridArray']) && count($_SESSION['ridArray'] > 0)){
addBookmark();
} else if (isset($_POST['rid']) && !isset($_SESSION['ridArray'])) {
$_SESSION['ridArray'] = array();
addBookmark();
}
function addBookmark() {
if (is_array($_SESSION['ridArray']) && isset($_SESSION['ridArray']) && isset( $_POST['rid']) ) {
array_push($_SESSION['ridArray'], $_POST['rid']); //push the id value from post to the session array
//$_SESSION['ridArrayClean'] = array_unique($_SESSION['ridArray']); //remove duplicates
print_r($_SESSION['ridArray']);
foreach($_SESSION['ridArray'] as $x) {
// Get all the data from the "example" table
$result = mysql_query("SELECT * FROM example WHERE id = $x")
or die(mysql_error());
$row = mysql_fetch_array( $result );
echo $row['productname'];
}}}
?>
変数$_SESSION['ridArray']
は、蓄積されたすべての ID を持つ配列を保持します。
私の問題は、このスクリプトが 1 つのアイテムがブックマークされている場合にのみ機能することです。ブックマークされた製品が複数ある場合、ブックマークしたすべてのものではなく、最後にブックマークされた製品名のみを取得します。
たとえば、bookmarkButton クラスをクリックした後に複数の製品 ID を取得する代わりに、配列内の 0,1,2,3 のようにします。最後にクリックされたもの、つまり6つだけを取得します。
私はこれをしばらく調べてきましたが、何が間違っているのかわかりません。