![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 14.01.2004 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mój problem jest z goła błahy, ale nie zmienia to faktu, że się z nim pieszczę już zdecydowanie za długo, dlatego postanowiłem poszukać pomocy u Was ![]() Temat - koszyk sklepowy Problem - Dodaję towar do koszyka - trzymam to w dwuwymiarowej tablicy. Skrypt ma sprawdzić, czy taki towar już istnieje, jeżeli tak, to wyświetla info, jeżeli nie to dodaje do koszyka. Problem w tym, że nawet jeśli skrypt znajdzie już produkt w tablicy, to wyświetla info i dodaje kolejny raz ten sam produkt do tablicy. Szukamy towaru po "$prod_id". Tablica:
Próbowałem na dwa sposoby chapnąć to zagadnienie, ale oba działają tak samo, dlatego stwierdzam że to problem mojego podejścia do tematu. Prosiłbym o przeanalizowanie tych skryptów i podzielenie się ze mną solucją jak to zjeść i nie zwrócić ![]() Sposób 1:
Sposób 2:
Będę wdzięczny za pomoc ![]() |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 178 Pomógł: 49 Dołączył: 16.04.2012 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
O ile dobrze zrozumiałem kod i założenia, to w obydwóch sposobach na moje oko problemem jest pętla (for w pierwszym, foreach w drugim).
Przypuśćmy, że zmienna $iloscrekordow jest równa 3, a poszukiwany produkt istnieje w koszyku... 1. ...w $_SESSION['sklep.koszyk'][2]. - Pętla wykonuje raz dla $i = 0. Warunek z if nie jest spełniony, więc produkt dodaje się do $_SESSION['sklep.koszyk']. Break kończy wykonywanie pętli, nie dostajesz informacji o tym, że produkt istnieje w koszyku. 2. ...w $_SESSION['sklep.koszyk'][1]. - Dzieje się wszystko dokładnie tak samo, jak w sytuacji powyżej. 3. ...w $_SESSION['sklep.koszyk'][0]. - Pętla wykonuje się dla $i = 0. Warunek z if tym razem jest spełniony i echo wyświetla tekst, po czym pętla wykonuje się dla $i = 1. Tym razem warunek nie jest spełniony i następuje dodanie do koszyka i zakończenie pętli. Przed pętlą stworzyłbym zmienną $znaleziono (Trzymając się Twojego nazewnictwa) i przypisał do niej wartość false i zmieniał ją tylko gdy produkt zostanie znaleziony. Następnie sprawdzał, wartość $znaleziono i wyświetlał informację/dodawał do tablicy. Ten post edytował Tuminure 28.11.2012, 11:09:13 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 14.01.2004 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Tak właśnie myślałem, że zrobiłem błąd w założeniu, ale jak się długo nad czymś siedzi to zazwyczaj logiczne postrzeganie zagadnienia ulatnia się z czasem
![]() Dzięki za pomysł ze zmienną dla zdarzenia "found" ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 3.08.2025 - 07:29 |