Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] KOSZYK SKLEPU, dodawanie produktu do koszyka
kielich
post
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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/questionmark.gif)

Ten post edytował kielich 8.08.2010, 21:23:06
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kielich
post
Post #2





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

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


O to cały kod

  1. public function koszykAction()
  2. {
  3. $filtr = new Application_Model_statyczne_filtry();
  4. $id = $filtr->filtrowanie_id($this->getRequest()->getParam('id'));
  5. $koszyk = new Zend_Session_Namespace('koszyk');
  6. $koszyk->setExpirationSeconds(7200);
  7.  
  8. if($id):
  9.  
  10. if(isset($id)):
  11. $ok = true;
  12. foreach ($koszyk->dane as $kosz => $opcja):
  13. echo 'To jest ID: '.$opcja['id'].' ma sztuk: '.$opcja['sztuk'].'<br />';
  14. if($opcja['id']==$id):
  15. $koszyk->dane[$kosz]['sztuk']++;
  16. $ok = false;
  17. endif;
  18. endforeach;
  19.  
  20. if($ok):
  21. $dane['id'] = $id;
  22. $dane['sztuk'] = 1;
  23. $koszyk->dane[]= $dane;
  24. endif;
  25. endif;
  26.  
  27. endif;


Jeśli nie pracujesz z zendem a chcesz mi pomóc (IMG:style_emoticons/default/smile.gif) do zapodaj to sobie normalnie na localu zmien tylko $id na GET oraz pozostałe zmienne

Ten post edytował kielich 9.08.2010, 11:31:56
Go to the top of the page
+Quote Post
zegarek84
post
Post #3





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

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


Cytat(kielich @ 9.08.2010, 11:30:53 ) *
O to cały kod...
Prawie, jednak nie cały bo i metoda nie domknięta a i nie ma przykładu użycia tej metody (IMG:style_emoticons/default/winksmiley.jpg) - ale wystarczy (IMG:style_emoticons/default/winksmiley.jpg)
Cytat(kielich @ 9.08.2010, 11:30:53 ) *
...Jeśli nie pracujesz z zendem a chcesz mi pomóc (IMG:style_emoticons/default/smile.gif) do zapodaj to sobie normalnie na localu zmien tylko $id na GET oraz pozostałe zmienne
w ogóle przy komputerach nie pracuję ^^ - a do zenda czasem zaglądam coby nieraz podpatrzeć zależności klas - jednak z samego zenda jakoś nigdy nie korzystałem - ale jestem wzrokowcem to i tego kodu nie musiałem odpalać (IMG:style_emoticons/default/winksmiley.jpg) ...

skoro to prawie działa to zamień ten foreach:
  1. foreach ($koszyk->dane as $kosz => $opcja):
  2. echo 'To jest ID: ' . $opcja['id'] . ' ma sztuk: ' . $opcja['sztuk'] . '<br />'; //zauważ, że w pierwszej kolejności wyświetliłeś a dopiero potem dodałeś do koszyka - nie miałeś tego na ekranie to tego nie zauważyłeś...
  3. if ($opcja['id'] == $id):
  4. $koszyk->dane[$kosz]['sztuk']++;
  5. $ok = false;
  6. endif;
  7. endforeach;

na ten:
  1. foreach ($koszyk->dane as $kosz => $opcja):
  2. if ($opcja['id'] == $id):
  3. $koszyk->dane[$kosz]['sztuk']++;
  4. $ok = false;
  5. endif;
  6. echo 'To jest ID: ' . $opcja['id'] . ' ma sztuk: ' . $opcja['sztuk'] . '<br />';
  7. endforeach;

oczywiście od tak tylko piszę, że ten ciąg powinien być w tej metodzie zwrócony a nie wyświetlony od razu na ekran (IMG:style_emoticons/default/winksmiley.jpg) ...
PS.
chyba dawniej sporo pisałeś w czymś w stylu VBA (IMG:style_emoticons/default/winksmiley.jpg) ... - a i przy okazji w językach skryptowych szybsze jest ++$i od $i++, w językach kompilowalnych w zasadzie to różnicy nie robi... a różnica jest taka, że przy $i++ tworzona jest dodatkowa zmienna a dopiero po użyciu starej zmiennej bądź w następnych linijkach kodu zastępowana przez nową wartość...
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.09.2025 - 15:05