[PHP]Inkrementacja wartości ilość |
[PHP]Inkrementacja wartości ilość |
28.08.2018, 08:39:20
Post
#1
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 0 Dołączył: 31.10.2012 Ostrzeżenie: (10%) |
Witam. Napisałem prosty skrypt, który wkłada do tablicy przedmioty, które wybrał użytkownik. Wszystko działa dobrze jednak mam problem z wartością ilość, która zawiera informacje ile sztuk danego przedmiotu wybrał użytkownik. Napisałem instrukcję if, która sprawdza czy istnieje juz w tablicy element i jeśli tak to zwiększa jego ilość o wartość przychodzącą z POST. Jednak nie działa to tak jak należy. Czy ktoś może podpowiedzieć mi co robię nie tak? Z góry dziękuje i pozdrawiam.
|
|
|
28.08.2018, 09:38:52
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 457 Pomógł: 6297 Dołączył: 27.12.2004 |
Twoj kod w zadnej czesci nie ma najmniejszego sensu. Pisales go totalnie na slepo bez zastanowienia sie co on robi. No to lecim:
foreach($_SESSION['koszyk'] as $zawartosc_koszyka) { $zawartosc_koszyka; } Wiesz co to robi? Nic to nie robi. Mozesz to wywalic bo niczemu nie sluzy if($_SESSION['nazwa_produktu'] == $zawartosc_koszyka['nazwa_produktu']) Nigdzie nie ustawiasz $_SESSION['nazwa_produktu'] wiec niby czemu teraz do tego porownujesz $zawartosc_koszyka['nazwa_produktu'] ktore notabene tez jest bledne? $zawartosc_koszyka['ilosc'] += $_POST['ilosc']; Zdaje sie chciales zwiekszac wartosc w sesji a nie w jakiej wyimaginowanej zmiennej? array_push($_SESSION['koszyk'], array('nazwa_produktu'=> $_SESSION['nazwa_produktu'], 'cena' => $_SESSION['cena'], 'ilosc' => $_POST['ilosc'])); Dane do sesji zdaje sie masz wkladac z $_POST a nie z sesji... Caly kod co tu pokazales jest do wywalenia. Nawet struktura sesji koszyka jest zwalona nie mowiac juz o jego aktualizacji. Koszyk ma byc tablica gdzie kluczem tablicy najlepiej niech bedzie identyfikator produktu. Po tym bedziesz wiedzial czy cos jest juz w koszyku czy nie. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
28.08.2018, 09:51:10
Post
#3
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 0 Dołączył: 31.10.2012 Ostrzeżenie: (10%) |
Twoj kod w zadnej czesci nie ma najmniejszego sensu. Pisales go totalnie na slepo bez zastanowienia sie co on robi. No to lecim: foreach($_SESSION['koszyk'] as $zawartosc_koszyka) { $zawartosc_koszyka; } Wiesz co to robi? Nic to nie robi. Mozesz to wywalic bo niczemu nie sluzy if($_SESSION['nazwa_produktu'] == $zawartosc_koszyka['nazwa_produktu']) Nigdzie nie ustawiasz $_SESSION['nazwa_produktu'] wiec niby czemu teraz do tego porownujesz $zawartosc_koszyka['nazwa_produktu'] ktore notabene tez jest bledne? $zawartosc_koszyka['ilosc'] += $_POST['ilosc']; Zdaje sie chciales zwiekszac wartosc w sesji a nie w jakiej wyimaginowanej zmiennej? array_push($_SESSION['koszyk'], array('nazwa_produktu'=> $_SESSION['nazwa_produktu'], 'cena' => $_SESSION['cena'], 'ilosc' => $_POST['ilosc'])); Dane do sesji zdaje sie masz wkladac z $_POST a nie z sesji... Caly kod co tu pokazales jest do wywalenia. Nawet struktura sesji koszyka jest zwalona nie mowiac juz o jego aktualizacji. Koszyk ma byc tablica gdzie kluczem tablicy najlepiej niech bedzie identyfikator produktu. Po tym bedziesz wiedzial czy cos jest juz w koszyku czy nie. a mógłbym po prostu zeby nie kombinowac pobrac produkt który wybrał klient odszukujac go w bazie i jesli stnieje to dodac go do koszyka, a pozniej jesli juz bedzie w koszyku to dodawac tylko jego ilosc? |
|
|
28.08.2018, 09:53:51
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 457 Pomógł: 6297 Dołączył: 27.12.2004 |
Nie wiem co w tym widzisz mniej kombinowania.... nadal musisz sprawdzic czy jest w koszyku juz czy nie.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
28.08.2018, 10:04:32
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Zobacz sobie przykład koszyka.
-------------------- |
|
|
28.08.2018, 11:45:59
Post
#6
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 0 Dołączył: 31.10.2012 Ostrzeżenie: (10%) |
$_SESSION['koszyk'] jest tablicą zawierajaca wybrane produkty. Dlaczego zwraca ze nic nie znaleziono? Tablica na pewno nie jest pusta bo printujac ja widze element ktory chce odszukac.
Ten post edytował Generic 28.08.2018, 11:46:13 |
|
|
28.08.2018, 11:52:33
Post
#7
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
var_dump($_SESSION['koszyk']);
|
|
|
28.08.2018, 11:54:24
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 457 Pomógł: 6297 Dołączył: 27.12.2004 |
No i kolejna sprawa
http://php.net/manual/en/function.array-search.php Cytat Return Values ¶
Returns the key for needle if it is found in the array, FALSE otherwise. If needle is found in haystack more than once, the first matching key is returned. To return the keys for all matching values, use array_keys() with the optional search_value parameter instead. Warning This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE. Please read the section on Booleans for more information. Use the === operator for testing the return value of this function. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
28.08.2018, 12:27:08
Post
#9
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 0 Dołączył: 31.10.2012 Ostrzeżenie: (10%) |
No i kolejna sprawa http://php.net/manual/en/function.array-search.php próbowałem nawet użyć in_array tak jak tutaj to jest opisane http://php.net/manual/en/function.in-array.php i też zwraca mi że nic nie znaleziono. albo mam zle skonfigurowane php albo nie mam pojecia co jest nie tak. |
|
|
28.08.2018, 12:39:30
Post
#10
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 19 Dołączył: 1.03.2012 Ostrzeżenie: (0%) |
próbowałem nawet użyć in_array tak jak tutaj to jest opisane http://php.net/manual/en/function.in-array.php i też zwraca mi że nic nie znaleziono. albo mam zle skonfigurowane php albo nie mam pojecia co jest nie tak. Tak jak podano Tobie wyżej, var_dump($_SESSION['koszyk']); |
|
|
28.08.2018, 13:08:45
Post
#11
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 0 Dołączył: 31.10.2012 Ostrzeżenie: (10%) |
Napisałem ten kod na nowo. Wyszło mi coś takiego jak ponizej i nie mam pomysłu jak przestac dodawac do tablicy nazwe produktu ktory sie juz znajduje i zwiekszyc tylko jego ilosc. Probowalem roznym ifem jednak zaden nie dzialal.
niektore rzeczy takie jak nazwa pobieram z sesyjnej bo nie mam ich w formularzu a zostalo to juz wczesniej pobrane na potrzeby wyswietlenie tytulu produktu np w miniaturce. Wpadłem na pomysł zeby przeszukac tablice jednak zwraca mi ze nie znalazlo wartosci.
|
|
|
Wersja Lo-Fi | Aktualny czas: 28.04.2024 - 04:00 |