Koszyk z produktami

Odpowiedz Nowy wątek
2019-03-13 15:15
0

Mam taką stronę. Jak stworzyć koszyk za pomocą sesji dzięki którym będą wyświetlane produkty w koszyku? Próbowałem sprawdzać za pomocą if czy dane z formularza zostały przesłane. Czy są jakieś inne możliwości?

                                        <div class="product">
                    <form method="POST" action="index.php">
                    <img class="product__image" src="img/products/energy-drink.svg" alt="Energy Drink">
                    <h2 class="product__name">Energy Drink</h2>
                    <h3 class="product__price">5.00</h3>
                    <button class="btn btn--primary" data-action="ADD_TO_CART">Add To Cart</button>
                </form>
                </div>
                <div class="product">
                    <form method="POST" action="index.php">
                    <img class="product__image" src="img/products/juice.svg" alt="Juice">
                    <h2 class="product__name">Juice</h2>
                    <h3 class="product__price">4.00</h3>
                    <button class="btn btn--primary" data-action="ADD_TO_CART">Add To Cart</button>
                </form>
                </div>
                <div class="product">
                    <form method="POST" action="index.php">
                    <img class="product__image" src="img/products/milk.svg" alt="Milk">
                    <h2 class="product__name">Milk</h2>
                    <h3 class="product__price">2.50</h3>
                    <button class="btn btn--primary" data-action="ADD_TO_CART">Add To Cart</button>
                </form>
                </div>
edytowany 1x, ostatnio: Szymon137, 2019-03-13 15:16
Sformatuj kod poprawnie. - axelbest 2019-03-13 15:42

Pozostało 580 znaków

2019-03-13 15:42
0
<?php while($r = mysqli_fetch_assoc($res)){ ?>
      <div class="col-sm-6 col-md-3">
        <div class="thumbnail">
          <img src="<?php echo $r['image']; ?>" alt="<?php echo $r['title'] ?>">
          <div class="caption">
            <h3><?php echo $r['title'] ?></h3>
            <p><?php echo $r['description'] ?></p>
            <p><a href="addtocart.php?id=<?php echo $r['id']; ?>" class="btn btn-primary" role="button">Add to Cart</a></p>
          </div>
        </div>
      </div>
<?php } ?>

<?php
    session_start();
    if(isset($_GET['id']) & !empty($_GET['id'])){
            $items = $_GET['id'];
            $_SESSION['cart'] = $items;
            header('location: index.php?status=success');
    }else{
        header('location: index.php?status=failed');
    }
?>

Więcej tutaj: https://codingcyber.org/simpl[...]t-application-php-mysql-6394/

Pozostało 580 znaków

2019-03-13 15:47
0

Aby coś sensownie dodać do koszyka to wypadałoby wiedzieć co dodajesz. Tak więc, brakuje Ci jakiegoś ID przy produktach. Następnie... W sesji trzymasz tylko informacje jaki to produkt (id) i ile sztuk. Cenę pobierasz i wyliczasz po stronie serwera.

Sesja idealnie nadaje się do koszyka, wiec dobrze kombinujesz. Dodawanie produktu nie wymaga żadnego formularza w Twoim wypadku (nie podajesz ile sztuk chcesz dodać do koszyka). Zatem wystarczy Ci zwykły link z hrefem w postaci np
index.php?action=addToCart&productID=xx

edytowany 1x, ostatnio: axelbest, 2019-03-13 16:01

Pozostało 580 znaków

2019-03-13 19:14
0
axelbest napisał(a):

Aby coś sensownie dodać do koszyka to wypadałoby wiedzieć co dodajesz. Tak więc, brakuje Ci jakiegoś ID przy produktach. Następnie... W sesji trzymasz tylko informacje jaki to produkt (id) i ile sztuk. Cenę pobierasz i wyliczasz po stronie serwera.

Sesja idealnie nadaje się do koszyka, wiec dobrze kombinujesz. Dodawanie produktu nie wymaga żadnego formularza w Twoim wypadku (nie podajesz ile sztuk chcesz dodać do koszyka). Zatem wystarczy Ci zwykły link z hrefem w postaci np
index.php?action=addToCart&productID=xx

ok w htmlu mam


                    <img class="product__image" src="img/products/beer.svg" alt="Beer">
                    <h2 class="product__name">Beer</h2>
                    <h3 class="product__price">6.00</h3>
                    <a href="index.php?action=addToCart&productID=Beer&amount=1"><button class="btn btn--primary" data-action="ADD_TO_CART">Add To Cart</button></a>
                </div>
                <div class="product">
                    <img class="product__image" src="img/products/energy-drink.svg" alt="Energy Drink">
                    <h2 class="product__name">Energy Drink</h2>
                    <h3 class="product__price">5.00</h3> 
                    <a href="index.php?action=addToCart&productID=Energy Drink&amount=1"><button class="btn btn--primary" data-action="ADD_TO_CART">Add To Cart</button></a>

a w php

                if(isset($_GET['productID'])){

                    $produkty= array($_GET['productID'] => $_GET['amount'] );

                    foreach ($produkty as $key => $value) {
                        echo $key." ".$value;
                    } 

                }

Czy da się tak zrobić żeby kolejny produkt i ilość była wpisywana do tablicy asocjacyjnej jako osobna wartość, bo w tym momencie cały czas mi ją nadpisuje

Pozostało 580 znaków

2019-03-13 19:56
1

Edit. W sumie teraz widzę, że chodziło o zwykłą tablicę asocjacyjną, ale wszystkie przykłady zadziałają dokładnie tak samo dla tablic.

Przecież sesja to tablica asocjacyjna, więc użyj jej tak, jakbyś normalnie to zrobił na tablicy.

$_SESSION['cart'][] = ['id' => $id, 'quantity' => $quantity];

np.

$_SESSION['cart'][] = ['id' => 1, 'quantity' => 2];
$_SESSION['cart'][] = ['id' => 2, 'quantity' => 3];
$_SESSION['cart'][] = ['id' => 3, 'quantity' => 1];
var_dump($_SESSION['cart']);

co da wynik taki:

array(3) {
  [0]=>
  array(2) {
    ["id"]=>
    int(1)
    ["quantity"]=>
    int(2)
  }
  [1]=>
  array(2) {
    ["id"]=>
    int(2)
    ["quantity"]=>
    int(3)
  }
  [2]=>
  array(2) {
    ["id"]=>
    int(3)
    ["quantity"]=>
    int(1)
  }
}

Oczywiście możesz też użyć i takiej wersji:

$_SESSION['cart'][] = [$id => $quantity];

i

$_SESSION['cart'][$id] = $quantity;

sumować ilość (tutaj będzie warning, jeżeli nie sprawdzisz czy dane $id posiada przypisaną jakąkolwiek wartość)

$_SESSION['cart'][$id] += $quantity;

Itd itd...

edytowany 4x, ostatnio: mefsh, 2019-03-13 20:06

Pozostało 580 znaków

2019-03-14 11:08
0

Mam pytanie jesli mozna.
Piszac taki sklep lub cokolowiek gdzie na koncu dochodzi do zakupu online osoba dochodzi do momentu gdzie musi odebrac jakies dane kiedy doszlo do zakupu (przykladowo karta) i nie doszlo i w zwiazku z tym podejmuje sie odpowiednia dzialania.
Jest jakies uniwersalne rozwiazanie? Myslalem o platnosci Paypal z opcja karty równiez.

Pozostało 580 znaków

2019-03-14 11:11
0

Nie ma uniwersalnego rozwiązania, dlatego najlepiej dać użytkownikowi możliwość wyboru różnych płatności np. PayPal, DotPay lub/i PayU.

Pozostało 580 znaków

2019-03-14 11:12
0

Moze zle sie wyrazilem. Chodzilo mi bardziej jak sie dobrac do tych danych. PayPal udostepnia cos ?

Pozostało 580 znaków

2019-03-14 11:14
1

Po prostu będziesz musiał zrobić integrację Twojego systemu z PayPal'em - https://developer.paypal.com/docs/ a czy to PayPal czy inny serwis z płatnościami nie ma znaczenia - i tak zazwyczaj udostępniają API lub gotowe biblioteki.

edytowany 1x, ostatnio: axelbest, 2019-03-14 11:15

Pozostało 580 znaków

2019-03-14 13:35
0

Czemu po naciśnięciu kolejnego produktu i dodaniu go do tablicy to usuwa nadpisuje mi obecny element?

                if(isset($_GET['action'])){

                    $produkt=$_GET['productID'];
                    $ilosc=$_GET['amount'];

                    $tab[]=$produkt." ".$ilosc;

                    for($i=0;$i<sizeof($tab);$i++){
                    echo $tab[$i];
                    }

Pozostało 580 znaków

2019-03-14 13:39
0

Nadpisujesz zmienną $tab.

Gdzie nadpisuje? - Patryk27 2019-03-14 14:16
Też nie wiem, bo autor dal mało kodu. - axelbest 2019-03-14 14:48

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0