#php #jquery #session #add
#php #jquery #сеанс #Добавить
Вопрос:
У меня возникла проблема с сеансами списка желаний в корзине покупок. Я добавляю с помощью кнопки статью в список желаний в виде массива сеансов, когда я нажимаю другой значок в список желаний, он удаляет мне выбранный элемент перед удалением сеанса выбранного ранее элемента. вот мой js-код для получения значений для сеанса:
$(document).ready(function(){
$(".addButton").on("click", function(event){
event.preventDefault();
var button = $(this);
var parent = button.parent();
var wlproducturl = parent.find("input[name$='.id']").val();
var wlproduct = parent.find("input[name$='.name']").val();
$.ajax({
type : "POST",
url : "../assets/wlscript.php",
data : { wlproduct : wlproduct, wlproducturl : wlproducturl },
success : function(data) {
$('div#resultwish').html('<div class="alert alert-success in fade" ><button type="button" class="close" data-dismiss="alert">×</button>You added ' wlproducturl ' ' wlproduct ''s to your wishlist.</div>');
}
});
// alert("Add article with id = " idArticle " and name = " nameArticle);
});
});
Это мой файл wlscript php:
<?php
session_start();
$p = trim($_POST['wlproduct']);
$q = trim($_POST['wlproducturl']);
$orders[$p] = $q;
$_SESSION['orders'] = $orders;
?>
И поэтому я вывожу выбранные элементы:
<?php
session_start();
print_r($_SESSION['orders']);
?>
Итак, как я могу добавить новый элемент в сеанс, не удаляя старый, добавить продукт в список желаний?
Ответ №1:
Может быть, просто потому, что вы каждый раз перезаписываете $orders своим фактическим кодом:
<?php
session_start();
$p = trim($_POST['wlproduct']);
$q = trim($_POST['wlproducturl']);
$orders[$p] = $q; // UNAWARE IF $_SESSION['orders'], OR $orders ALREADY CONTAIN SOMETHING...
$_SESSION['orders'] = $orders; // ... AND THEREFORE ALL IS OVERWRITTEN.
?>
Может быть, это?
<?php
session_start();
// if (session_is_registered("orders")) // CAREFUL, OBSOLETE SINCE PHP 5.4.0
if (is_array($_SESSION['orders']))
{
$orders = $_SESSION['orders']; // RETRIEVING WHAT HAS PREVIOUSLY BEEN STORED
}
$p = trim($_POST['wlproduct']);
$q = trim($_POST['wlproducturl']);
$orders[$p] = $q; // THIS NOW ADDS TO EXISITNG
$_SESSION['orders'] = $orders;
?>
Комментарии:
1. он выдает мне внутреннюю ошибку сервера 500, когда я добавляю в список желаний в wlscript.php вы знаете , о чем идет речь ?
2. Совсем нет. Этот код не должен мешать Apache. Это может быть связано с копированием / вставкой… Вы пробовали писать добавленные строки вместо их копирования?
3. Какую версию PHP вы используете? session_is_registered может быть устаревшим. В этом случае попробуйте : if (is_array($_SESSION[‘orders’])) …
4. Отличный человек, действительно спасибо, всегда потрясающе здесь, на stackoverflow, пользовательская поддержка, большое спасибо, человек, действительно, сессия устарела, работал с if (is_array($ _SESSION [‘orders’])) 😉