Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Array w sesji..
Forum PHP.pl > Forum > PHP
MarShalL89
Witam, od 4 dni borykam się z małym problemem. Próbuję zrobić coś "ala" koszyk sklepu internetowego. Kiedy ktoś kliknie na przycisk dodaj do koszyka chcę aby dodawał się produkt do pamięci. Jak wiadomo można kupić kilka produktów. Planuję więc zrobić to na zasadzie tablicy array i sesji. Myślałem, żeby wyglądało to na takiej zasadzie - po kliknięciu buttonu "dodaj" ID produktu z bazy danych dodaje się do tablicy produkty. Cała - aktualna - tablica zostaje zapisana do sesji. Po kliknięciu (dodaniu) kolejnego produktu - znowu id produktu dodaje się do tablicy, ta do sesji itd aż do zrealizowania zakupów..
Wiadomo - mam kod wyświetlania produktu

Fragment kodu:
  1. $produkty = mysql_query("select * from produkty") or die('Blad zapytania');
  2.  
  3. if(mysql_num_rows($produkty) > 0)
  4. while ( $row = mysql_fetch_row($produkty) )
  5. {
  6. echo '<form method="post" action="index.php" />';
  7. echo $row[0].'<br>';
  8. echo $row[1].'<br>';
  9. echo $row[2].'<br>';
  10. echo $row[3].'<br>';
  11. echo $row[4].'<br>';
  12. echo $row[5].'<br>';
  13. echo $row[6].'<br>';
  14. echo '<input type="hidden" name="ItemID" value="'.$row[0].'">';
  15. echo '<input type="submit" value="Dodaj do kosza"></form><br><br>';
  16. }

I moją tablicę:
  1. $ItemID = htmlspecialchars($_POST['ItemID']);
  2. $produkty=array('');
  3. $produkty[] = $ItemID;
  4. $_SESSION['produkty']=$produkty;


Kod raczej do końca nie działa. (Inaczej - dodaje tylko ostatnio klikniętą opcję - a ma dodawać wszystkie) Może mnie ktoś naprowadzić jak to dokończyć / zrobić? Jakich funkcji użyć?

PS. Po wpisaniu
  1. Print_r ($_SESSION['produkty']);


Wynik zawsze wyświetla się:
Array ( [0] => [1] => 3 ), gdzie 3 to ID produktu. Gdy wybiore produkt o ID 2 to jest analogicznie Array ( [0] => [1] => 2 ) itd...

Wstawiłem też pętle:

  1. $liczba=count($produkty);
  2. echo '<br><br>'.$liczba;
  3. for($i=0;$i<$liczba;$i++)
  4. {
  5. $produkty[$i+1] = $ItemID;
  6. }
  7. $_SESSION['produkty']=$produkty;


Ale to nic mi nie dało, może ta pętla ma jakiś błąd - proszę o sprawdzenie...
Sephirus
Zamień

  1. $ItemID = htmlspecialchars($_POST['ItemID']);
  2. $produkty=array(''); // tu za każdym razem tworzysz nową tablicę - nie sprawdzasz czy już nie istnieje
  3. $produkty[] = $ItemID;
  4. $_SESSION['produkty']=$produkty; // a tu ją nadpisujesz :)


na

  1. $ItemID = htmlspecialchars($_POST['ItemID']);
  2. if(!isset($_SESSION['produkty'])) { // sprawdzasz czy jest już w sesji koszyk, jeśli nie tworzysz pusty
  3. $_SESSION['produkty'] = array();
  4. }
  5.  
  6. $_SESSION['produkty'][] = $ItemID; // dorzucasz do id produktu do tablicy


HTH wink.gif
MarShalL89
Dziękuję kto by pomyślał, że tak niewiele mnie dzieli od celu smile.gif
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.