Добавить продукт в сеанс списка желаний, а не удалять сеанс, как сейчас

#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’])) 😉