2016-07-20 3 views
0

** Обновление ** я получил сценарий для работы, но я хотел бы иметь возможность удалить продукт, а также ...Создание «Корзина» с сохраненной сессии

это мой код сейчас:

<?php 

session_start(); 

if (!array_key_exists('products', $_SESSION) || !is_array($_SESSION['products'])) { 
    $_SESSION['products'] = []; 
} 

$productName = array_key_exists('productName', $_POST) ? (string) $_POST['productName'] : ''; 

if ($productName) { 
    $_SESSION['products'][] = $productName; 
} 
?> 
<h4>Saved Items</h4> 

    <?php foreach ($_SESSION['products'] as $product): ?> 
    <div class="echo-product"><i style="color:#F60;padding-right:20px;" class="fa fa-anchor" aria-hidden="true"></i><?php echo htmlspecialchars($product); ?></div> 
    <?php endforeach;?> 



<div class="btn-01"><p>Offerte aanvragen</p></div> 


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 
<script> 
$(function(){ // $(document).ready shorthand 
    $('.btn-01').hide().fadeIn(1000); 
}); 
</script> 

Хорошо, позвольте мне объяснить. На моем сайте у меня есть что-то вроде корзины покупок. Клиент выбирает лодку и позволяет сказать (для этого примера) тип лодки и дополнительные предметы.

Когда они это сделают, будет оставлено несколько вариантов.

Теперь посетитель может выбрать «сохранить» лодку и параметры, нажав «сохранить эту опцию». Этот параметр затем сохраняется в сеансе, йота код:

<?php 
    // Set session variables 
    $_SESSION["boat"][] = get_the_title(); 
?> 

И вторит используя этот код:

<?php if(isset($_SESSION['boat'])){ 
    echo implode("<br />", array_unique($_SESSION['boat'])); 
} ?> 

Вот первый вопрос:

Этот код прекрасно работает, только если я сохраните первый вариант лодки (есть 3 (A, B, C)), затем он говорит (если я его повторяю) Выбранная лодка A. Но когда я затем сохраняю третью лодку, она говорит: «Лодка A, B И C» сохранена , Тогда он не пропускает лодку B. Я не знаю, почему это так. Кто-нибудь знает? И как это исправить?

Хорошо, второй вопрос. Тот же код. Как я могу сделать это так, чтобы сохраненная опция была видна в div #saved-options, как своего рода корзина с добавлением элементов, и было бы здорово, если бы их тоже можно было удалить.

Если я использую этот код:

<div class="col-sm-2"> 
    <div id="saved-boats"> 
    <h4>Saved boats</h4> 

    <?php if(isset($_SESSION['boat'])){ 
     echo implode("<br />", array_unique($_SESSION['boat'])); 
    } ?> 
</div> 

Тогда все лодки уже сохранены. Я могу уничтожить сессию, используя этот код:

<div class="col-sm-2"> 
    <div class="saved-boats"> 
    <h4>Saved boats</h4> 
    <?php 
     // remove all session variables 
     session_unset(); 
     // destroy the session 
     session_destroy(); 
    ?> 

    <?php if(isset($_SESSION['boat'])){ 
     echo implode("<br />", array_unique($_SESSION['boat'])); 
    } ?> 
</div> 

Тогда я это работает, с проблемой 1, но хорошо, но я до сих пор не могу обновление Авто div #saved-boats.

Есть ли кто-нибудь, кто мог бы помочь мне с этими проблемами? Заранее спасибо.

+0

Вам необходимо создать массив в сеансе. в то время как обновление сначала получает этот массив из сеанса, а затем обновляет его и сохраняет его обратно на этот сеанс. – eronax59

+0

Используя этот код: ' 'Мне сказали, что я делаю массив? @RonakP – Steggie

+0

да, так что, как я уже сказал. получить массив, обновить его и сохранить его – eronax59

ответ

0

вы можете попробовать, как это ...

$stuff = array(...); 

$_SESSION['boat'] = array('cart_data'=> $stuff); 

$stuff = $_SESSION['boat']['cart_data']; 

$stuff = // do your process like push or pop. 

$_SESSION['boat'] = array('cart_data'=> $stuff); 

вторя данных.

<?php foreach($_SESSION['boat']['cart_data'] as $key=>$value){ 
    echo $value; 
} ?> 
+0

спасибо за вашу помощь. Что я могу добавить в массив. (все, что я хочу знать). Но что бы вы использовали. И не могли бы вы объяснить, что означает толчок или поп? – Steggie

+0

push означает добавить новый товар в корзину – eronax59

+0

поп означает удаление из корзины – eronax59

Смежные вопросы