Я попытался создать небольшую функцию «закладки» для своего сайта. Пользователи могут нажать на ".bookmarkButton", который будет выполнять следующий скрипт:Array_Push не добавляет к концу массива, он заменяет весь массив
<!--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']
содержит массив со всеми идентификаторами, которые были накоплены.
Моя проблема заключается в том, что этот скрипт работает только в том случае, если один элемент отмечен закладкой. Когда добавлено более одного продукта, я получаю только имя продукта, которое было последним, а не все, что я закладовал.
Так, например, вместо того, чтобы получать несколько идентификаторов продукта после щелчка по классу bookmarkButton следующим образом: 0,1,2,3 в массиве. Я получаю только тот, который был нажат последним, то есть 6.
Я изучаю это какое-то время, и я не могу видеть, что я делаю неправильно.
начать ли сеанс автоматически? Я не вижу session_start(); Вот. – Cheery
Начало сеанса находится в начале страницы. Я не включил его здесь. – tushar747
Попробуйте код в моем ответе. – Cheery