[PHP]Sumowanie produktów w koszyku |
[PHP]Sumowanie produktów w koszyku |
16.11.2019, 14:21:18
Post
#1
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 15.11.2019 Ostrzeżenie: (0%) |
Witam serdecznie wszystkich użytkowników.
Jestem nowy na forum i od razu zaznaczę że dopiero zaczynam przygodę z PHP. Wracając jednak do tematu, potrzebuję pomocy w przerobieniu skryptu aby po dodaniu jednego produktu do koszyka zmieniał tylko liczbę z ilości:1 na 2, 3 itd. ponieważ póki co, zapisuję produkt jeden pod drugim po prostu w ilości:1. Jeżeli źle się wyraziłem lub nie do końca jest jest jasne to co napisałem, to chętnie odpowiem na wszystkie pytania. Poniżej przedstawiam skrypt i liczę na pomoc.
Próbowałem już na różne sposoby ale co najwyżej udawało mi się zliczyć liczbę wszystkich produktów... Ten post edytował misteroous 16.11.2019, 14:28:10 |
|
|
16.11.2019, 16:59:10
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 834 Pomógł: 225 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Chcesz liczbę unikalnych produktów w koszyku?
To chyba u Ciebie ta linia rozwiązuje ten problem: count($akcesoria) |
|
|
16.11.2019, 17:04:58
Post
#3
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 15.11.2019 Ostrzeżenie: (0%) |
Tylko, że gdy dodam dwa razy produkt po 1 to wyświetla mi je jako oddzielne produkty po 1 a nie sumuje jako jeden produkt w ilości: 2
Przykład: Czerwona koszulka, cena: 15 zł, ilość: 1 Czerwona koszulka, cena: 15 zł, ilość: 1 Zamiast: Czerwona koszulka, cena: 15 zł, ilość: 2 |
|
|
16.11.2019, 17:21:58
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 834 Pomógł: 225 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
To zamiast $akcesoria[$k] używaj $akcesoria[$produkId]
Zamiast for() użyj foreach() Posortuj sobie wg klucza przed foreach() a następnie:
Tak swoją drogą, zapisujesz coś w bazie danych? Bo z bazy danych też możesz uzyskać taki wynik, jedyn zapytaniem. |
|
|
16.11.2019, 19:36:36
Post
#5
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 15.11.2019 Ostrzeżenie: (0%) |
Niestety nie - wszystko odbywa się w php.
Dziękuje za odpowiedź. Spróbuje pokombinować według twojego przykładu. Niestety jakoś nie mogę tego ogarnąć... Może to dlatego, że próbuje to zrobić cały dzień Skrypt w którym odbywa się ta funkcja dodawania wygląda tak:
Domyślam się, że to gdzieś tutaj powinienem to zmienić ale gdzie i co dokładnie to nie wiem. Mógłbyś jakoś pomóc? Ten post edytował misteroous 16.11.2019, 18:42:56 |
|
|
16.11.2019, 20:24:52
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 834 Pomógł: 225 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Jakbyś podał jeszcze przykładową zawartość $_POST bo wygląda to tak jakbyś miał nazwę produktu: 123456DługopisBezbarwny
Wiesz że warto pomyśleć o nie używaniu powtórzeń tego samego kodu? np. linie 11-24 powyższego kodu można zamienić na:
W ogóle co ma zmienna $ksiazki oraz jak wygląda też $_SESSION['koszyk'][$typProduktu] bo nie ogarniam zamysłu. |
|
|
18.11.2019, 15:53:41
Post
#7
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 15.11.2019 Ostrzeżenie: (0%) |
Masz rację zmienna $ksiazki nie jest potrzebna.
Pokierowałem się twoim przykładem i kod działa bez zarzutu:
Spróbuję teraz zsumować te artykuły idąc za twoją poprzednią wskazówką, zobaczymy czy mi się uda |
|
|
18.11.2019, 21:45:23
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 834 Pomógł: 225 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Teraz patrząc po Twoim kodzie to nie potrzebna jest w funkcji argument $akcesoria.
|
|
|
21.11.2019, 04:03:51
Post
#9
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 15.11.2019 Ostrzeżenie: (0%) |
No dobrze udało mi się to zrobić w taki sposób, że kiedy
skrypt działa i wyświetla: czyli zlicza i dobrze... Ale kiedy wkrypt wygląda tak:
skrypt już nie działa pomimo tego, że daję identyczną wartość co:
I wyświetla taki błąd: Proszę o pomoc, co robię źle i jak to naprawić? Pozdrawiam Ten post edytował misteroous 21.11.2019, 04:06:00 |
|
|
21.11.2019, 08:17:22
Post
#10
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 32 Dołączył: 10.03.2004 Ostrzeżenie: (10%) |
|
|
|
21.11.2019, 09:01:53
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 834 Pomógł: 225 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Przemyśl czy jest sens tworzyć treści w postaci:
Ilosc||Nazwa bo dużo wygodniejsze jest praca na tablicy: korzystając z funkcji json_encode($array) i json_decode($stringJson, true) |
|
|
21.11.2019, 10:20:46
Post
#12
|
|
Grupa: Zarejestrowani Postów: 594 Pomógł: 66 Dołączył: 22.02.2008 Skąd: Dublin Ostrzeżenie: (0%) |
-------------------- |
|
|
21.11.2019, 12:49:45
Post
#13
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 15.11.2019 Ostrzeżenie: (0%) |
Dziękuję wszystkim za zainteresowanie.
@Lord próbując twoim przykładem wyskakuję mi błąd:
właśnie w linii w której zamieniłem echo na return @Tomplus Mógłbyś pokazać na przykładzie? @dublinka Dalej nie wiem jak zaimplementować ten skrypt do wartości $text
|
|
|
21.11.2019, 15:14:52
Post
#14
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 32 Dołączył: 10.03.2004 Ostrzeżenie: (10%) |
@Lord próbując twoim przykładem wyskakuję mi błąd:
bo stringi w php łaczysz . a nie ,
|
|
|
21.11.2019, 15:25:29
Post
#15
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 15.11.2019 Ostrzeżenie: (0%) |
Dobrze, poprawiłem to tak:
Ale wciąż wywala mi błąd:
Ten post edytował misteroous 21.11.2019, 15:26:02 |
|
|
21.11.2019, 15:30:01
Post
#16
|
|
Grupa: Moderatorzy Postów: 36 446 Pomógł: 6292 Dołączył: 27.12.2004 |
Po grzyba tworzysz tablice w tablicy?
nie $text=[ array_map(function ($var) { return "<br />". "\n".'"' .$var['ilosc']. "||". $var['opis']. '"'.","; }, $arr) ]; a: $text= array_map(function ($var) { return "<br />". "\n".'"' .$var['ilosc']. "||". $var['opis']. '"'.","; }, $arr) ; A tak w ogole po grzyba przeksztalcasz tablice na tekst, tylko po to by pare linijek nizej ten tekst przeksztalcic na te sama tablice? Przeciez to nie ma zadnego sensu -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
21.11.2019, 15:35:02
Post
#17
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 15.11.2019 Ostrzeżenie: (0%) |
|
|
|
21.11.2019, 15:37:25
Post
#18
|
|
Grupa: Moderatorzy Postów: 36 446 Pomógł: 6292 Dołączył: 27.12.2004 |
Ja napisalem, caly ten kod jest do 4 liter - bez obrazy.Nie ma zadnej logiki anie sensu.
Zamiast zamieniac $arr na tablice tekstow, to iteruj bezposrednio po $arr i sobie sumuj co masz sumowac. Nie ma sensu poprawiac tego co tu teraz stworzyles bo to tylko marnowanie czasu -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
21.11.2019, 15:38:38
Post
#19
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 30 Dołączył: 22.01.2007 Ostrzeżenie: (0%) |
wklej kod co Ty tam robisz teraz
|
|
|
21.11.2019, 15:47:00
Post
#20
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 15.11.2019 Ostrzeżenie: (0%) |
Nie obrażam się, napisałem, że jestem początkujący i to bardzo. Ten skrypt nie jest mój, ja tylko staram się go przerobić.
Wkleję wam oryginalny skrypt a wy postarajcie się może w miarę swoich możliwości podpowiedzieć co mam zrobić żeby działało tak jak trzeba...
Problem polega na tym, że gdy dwa razy dodam produkt po 1 zamiast zsumować te produkty to dodaje jeden pod drugim po 1. zamiast:
To otrzymuję:
Może teraz coś pomożecie |
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 15:52 |