Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] KOSZYK SKLEPU, dodawanie produktu do koszyka
kielich
post 8.08.2010, 13:10:02
Post #1





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


Witam,
Tworzę koszyk i mam błąd który nie wiem jak obejść mianowicie o to kod:

  1. $koszyk = new Zend_Session_Namespace('koszyk'); //Zmienna sesyjna koszy
  2.  
  3. $dane['id'] = $id;
  4. $dane['sztuk'] = 1;
  5. $koszyk->dane[] = $dane;
  6.  
  7.  
  8. if($id==1): //sprawdzamy czy juz jest to id (ja sprawdzałem tylko na ID 1 - dla większego komfortu tongue.gif )
  9. foreach($koszyk->dane as $dane => $k):
  10. $koszyk->dane[$dane]['sztuk'] ++; //zwiekszamy liczbe sztuk o jeden
  11. endforeach;
  12. endif;
  13.  
  14. print_r($koszyk->dane);

i błąd polega na tym że dodaje tę 1 sztukę więc tak jak ma dodawać ale dodatkowo tworzy nowe rekordy w tablicy a ja bym chciał aby zmienił tylko ilość w danym produkcie.
Gdzie się zakręciłem questionmark.gif

Ten post edytował kielich 8.08.2010, 21:23:06


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kielich
post 8.08.2010, 20:08:33
Post #2





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


napisałem tak

  1. $koszyk = new Zend_Session_Namespace('koszyk');
  2.  
  3. if(isset($id)):
  4. $ok = true;
  5. foreach ($koszyk->dane as $kosz => $opcja):
  6. echo 'To jest ID: '.$opcja['id'].' ma sztuk: '.$opcja['sztuk'].'<br />';
  7. if($opcja['id']==$id):
  8. $koszyk->dane[$kosz]['sztuk']++;
  9. $ok = false;
  10. endif;
  11. endforeach;
  12.  
  13. if($ok):
  14. $dane['id'] = $id;
  15. $dane['sztuk'] = 1;
  16. $koszyk->dane[]= $dane;
  17. endif;
  18. endif;


I działa to już znacznie lepiej ale jest gdzieś błąd ponieważ wpisuje w url id 4 i enter i dodaje mi do tablicy klikam jeszcze raz dodaje mi następną sztukę czyli tak jak chce smile.gif
Wpisuje id 6 klikam i dodaje się do tablicy z tym że dodatkowo dodaje jedna sztukę do poprzedniej czyli do ID 4 ale kiedy odświeżę to normalnie dodaje do 6 jak należy .
Co jest tu nie tak questionmark.gif?

Moim zdaniem problem leży w if' w foreach ponieważ zawsze będzie spełniony a muszę sprawdzić czy id jest już w tablicy analogicznie mogę użyć array_key_exists lecz kiedy zrobie tak

  1. if(array_key_exists($id,$opcja['id'])):


wywala błędy array_key_exists() expects parameter 2 to be array, integer given

KURDE NIKT NIE JEST W STANIE MI POMÓC questionmark.gif;:(


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post
zegarek84
post 9.08.2010, 10:32:07
Post #3





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


zwróć uwagę jak wstawiasz do koszyka kolejne produkty:
$koszyk->dane[]= $dane;
tutaj kolejne produkty będą miały kolejne klucze... w sumie tak też może być ale mogło być np.
$koszyk->dane[$id_produktu]= $dane; - okej, pomińmy to idźmy dalej... w $opcja['id'] trzymasz ten identyfikator, niech i tak będzie, ale funkcja array_key_exists($id,$opcja['id']) dokładnie sprawdza czy istnieje klucz w tablicy (która u Ciebie nie jest tablicą bo to identyfikator...) $opcja['id'] o nazwie $id... czyli prawie jakby to samo co sprawdzać czy istnieje zmienna w lokalizacji $opcja['id'][$id]...
Cytat(kielich @ 8.08.2010, 20:08:33 ) *
I działa to już znacznie lepiej ale jest gdzieś błąd ponieważ wpisuje w url id 4 i enter i dodaje mi do tablicy klikam jeszcze raz dodaje mi następną sztukę czyli tak jak chce smile.gif
Wpisuje id 6 klikam i dodaje się do tablicy z tym że dodatkowo dodaje jedna sztukę do poprzedniej czyli do ID 4 ale kiedy odświeżę to normalnie dodaje do 6 jak należy .
Co jest tu nie tak questionmark.gif?
nie napisałeś jak wyświetlasz sobie ten koszyk... założę się, że dodajesz kolejny produkt od razu wyświetlając zawartość koszyka i zapewne robisz coś na styl:
$i=2;
echo $i++; // ile się wyświetli - 2 a zmienna ma 3, czyli niżej
echo $i; // 3, zaś:
echo ++$i; // 4 i zmienna jest 4


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post

Posty w temacie
- kielich   [PHP] KOSZYK SKLEPU   8.08.2010, 13:10:02
- - nospor   $koszyk->dane[] = $dane; przeciez ten...   8.08.2010, 13:18:33
- - kielich   tak wiem . Wypisałem tak [PHP] pobierz, plaintext...   8.08.2010, 14:25:54
- - dr_bonzo   Do koszyka wstawiaj strukture/obiekt ktor bedzie z...   8.08.2010, 15:43:33
- - kielich   napisałem tak [PHP] pobierz, plaintext $kos...   8.08.2010, 20:08:33
|- - zegarek84   zwróć uwagę jak wstawiasz do koszyka kolejne produ...   9.08.2010, 10:32:07
- - kielich   Dziękuje za opowiedz ale szczerze mówiąc do niczeg...   9.08.2010, 11:06:54
- - zegarek84   pokaż gdzieś ale w całości skrypt którym dodajesz ...   9.08.2010, 11:22:05
- - kielich   O to cały kod [PHP] pobierz, plaintext publ...   9.08.2010, 11:30:53
|- - zegarek84   Cytat(kielich @ 9.08.2010, 11:30:53 )...   9.08.2010, 12:09:04
- - kielich   No jednak to nic nie dało kiedy dodam do koszyk wy...   9.08.2010, 12:25:18
- - zegarek84   to podaj gdzieś cały kod - zmienić się zmieniło bo...   9.08.2010, 12:34:15
- - kielich   Napisałem cały kod już jest po prostu użyty poprze...   9.08.2010, 12:43:49
- - zegarek84   czy na pewno zamieniłeś sobie te pętle foreach??.....   9.08.2010, 13:35:14
- - kielich   $id jest liczba(integer) jak widać jest filtr...   9.08.2010, 13:45:42
- - zegarek84   zamień tą metodę na inną - trochę mi tu coś nie gr...   9.08.2010, 16:22:51
- - kielich   Czy ty na prawdę pisałeś to specjalnie dla mnie ...   9.08.2010, 17:44:49
- - zegarek84   Cytat(kielich @ 9.08.2010, 18:44:49 )...   9.08.2010, 18:37:36


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 18:11