Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nadpisywanie elementów w koszyku
Forum PHP.pl > Forum > PHP
hinczyk
Witam!
Mam problem z nadpisaniem dodanych elementów w sklepie. Jaśniej wygląda to tak:
mam jakiś przedmiot który ma symbol np: z40 i przypisane jest mu 10 szt, ale jeśli wyjdę z koszyka i spróbuje dodać jeszcze raz tą samą rzecz to w tablicy tworzy mi się kolejny przedmiot z symbolem z40. A jak zrobić żeby sumowały się sztuki a nie dodawało kolejną pozycję?

Na razie mam tylko dodawanie do tablic:
  1. <?php
  2. if(!isset($_SESSION['symbol'])){
  3. $_SESSION['symbol']=array();
  4. $_SESSION['ilosc']=array();
  5. $_SESSION['cena']=array();
  6. }
  7. if(isset($_GET['symbol'])){
  8. $_SESSION['cena'][]=$_GET['netto'];
  9. $_SESSION['symbol'][]=$_GET['symbol'];
  10. $_SESSION['ilosc'][]=$_GET['ilosc'];
  11. header('location: ' . $_SERVER['PHP_SELF'] . '?' . SID);
  12. exit();
  13. }
  14. ?>

Jeśli mógłby mi ktoś coś podpowiedzieć byłbym wdzięczny:)
artega
Informacje o cenie w sesji są zbędne, poza tym cena może ulec zmianie podczas sesji co doprowadzi do "drobnego" konfliktu. Wystarczy, że symbol produktu zostanie oznaczony jako klucz w tablicy a jego wartość to ilość do zamówienia.
  1. <?php
  2. $_SESSION['koszyk'][ $_GET['symbol'] ]++;
  3. ?>

Dodaj oczywiście filtracje danych winksmiley.jpg
hinczyk
No ok, tylko jak teraz wyświetlić wszystkie elementy w koszu? Bo jak symbol jest np taki: z2233 to raczej pętlą tego nie zrobię;/
Cezar708
możesz tak:

  1. <?php
  2. if(!isset($_SESSION['symbol'])){
  3. $_SESSION['symbol']=array();
  4. $_SESSION['ilosc']=array();
  5. $_SESSION['cena']=array();
  6. }
  7. if(isset($_GET['symbol'])){
  8. $key = array_search($_GET['symbol'], $_SESSION['symbol']);
  9. if ( false === $key ){
  10. $_SESSION['cena'][]=$_GET['netto'];
  11. $_SESSION['symbol'][]=$_GET['symbol'];
  12. $_SESSION['ilosc'][]=$_GET['ilosc'];
  13. } else {
  14. $_SESSION['cena'][$key] += $_GET['netto'];
  15. $_SESSION['ilosc'][$key] += $_GET['ilosc'];
  16. }
  17. header('location: ' . $_SERVER['PHP_SELF'] . '?' . SID);
  18. exit();
  19. }
  20. ?>


nie sprawdzałem czy działa ale w założeniu powinno
artega
Cytat(hinczyk @ 5.05.2008, 21:57:58 ) *
No ok, tylko jak teraz wyświetlić wszystkie elementy w koszu? Bo jak symbol jest np taki: z2233 to raczej pętlą tego nie zrobię;/

  1. <?php
  2.  
  3. foreach ($_SESSION['koszyk'] as $symbol => $ilosc)
  4. {
  5. echo $symbol." = ".$ilosc;
  6. }
  7.  
  8. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.