W jaki sposób poprawić tą klasę, aby ten program zadziałał.

0

W jaki sposób poprawić tą klasę, aby ten program zadziałał. Błąd jest w deklaracjach $artykuly["$numer"] = 5

class koszyk
{

var $artykuly;
$artykuly["$numer"] = 5;

$ilosc = 10;


// metoda dodająca podaną ilość atykułów do koszyka

function dodaj($numer, $ilosc)
{


$this->arykuly["$numer"] += $ilosc;


}

// metoda usuwająca podana ilość artykułów z koszyka


function usun($numer, $ilosc)
{

if ($this->artykuly["$numer"]>$ilosc)
$this->artykuly["$numer"]-= $ilosc;

else

$this->artykuly["$numer"]=0;

}

// metoda wyświetlająca zawartość koszyka

function wyswietl()

{

while(list($k, $v) = each($this->artykuly))

if($v>0)

echo "artykuł nr $k - $v sztuk <br>";

}

}


// przykład wykorzystania


$koszyk = new Koszyk;

$koszyk->dodaj('20', 2);

$koszyk->dodaj('12', 4);

$koszyk->dodaj('20', 5);

$koszyk->usun('12', 4);

$koszyk->wyswietl();

?>






5

Znów skopiowałeś losowy kod z netu z epoki krzemu łupanego.
var nie powinno już być używane od PHP 5 a mamy PHP8.
Przeczytaj to:
https://www.w3schools.com/php/keyword_var.asp

A teraz pomyśl skąd ma się nagle pojawić tam zmienna $numer ?
To coś to raczej sam dopisałeś?
Jeśli chcesz się czegoś nauczyć, zmień podejście!

3

Ok, oto moje porady:

  • nazwy pisane w jezyku polskim.... do kosza. Dlaczego? bo nawet przeglądając stack overflow natkniesz się na basket/cart zamiast koszyka, wiec bedzie latwiej Ci odnaleźć nawiązania przy Twoim kodzie
  • class koszyk, a potem var $artykuly ? Czy Ty uzywasz php4? zobacz jak wyglada normalna struktura klasy i dowiedz się do czego służa modyfikatory dostępu
  • $artykuly["$numer"] = 5; - co ta linia robi Twoim zdaniem? jeśli już coś masz inicjować w klasie - a te "5" idealnie się pod to nadaje - to polecam uzywanie konstruktora
  • komentarz // metoda dodająca podaną ilość atykułów do koszyka czy na serio przy metodzie o nazwie dodaj, w klasie koszyk - to aż tak trudne by się tego nie domyślić? Poza tym nazwij to normalnie typu "addProductToCart" i komentarze będą zbędne
  • naucz się jak korzystać z tablic - bo to co chcesz okiełznać z tym arykuly["$numer"] woła o pomstę do nieba/potwora spaghetti
  • zamiast metody wyswietl() zrób metodę getContent, a wyświetlaniem produktów z koszyka niech zajmie się inny kod.
  • ta pętla while(list($k, $v) = each($this->artykuly)) if($v>0) echo "artykuł nr $k - $v sztuk <br>"; } czemu nie zrobisz normalnie foreach'a?
  • dlaczego usuwając coś z koszyka, zerujesz tylko ilość produktów, zamiast je całkowicie wywalić? Przecież w powyższej pętli, sprawdzasz to, a jest to moim zdaniem totalnie zbędne. Usuwaj element z tablicy. Jak w sklepie coś wyjmujesz z koszyka, to przy wykladaniu produktów przy kasie, też sprawdzasz czy w koszyku ilość "niekupionego" sera jest większa niż 0?

[edit]....oooo zauwazylem - masz artykuly, a raz arykuly :)

2

@adamon:

Za cholerę nie da się ciebie zrozumieć.

  • od czterech lat ze swoją wiedzą nie zrobiłeś NIC. Robisz z siebie na 4p egzotyczne zwierzątko, NAWET jeśli czasowo okazuje się Tobie przychylność
  • wrzucasz jakieś ogromnie przestarzałe odpryski i to autorów na twoim poziomie, DALEKIE od jakiejkolwiek kompleksowej funkcjonalności.
    Taka klasa, NAWET jakby była cudownie naprawiona, nie służyła by do niczego, zero, null

W przykładzie, z którego rżniesz, NIGDY nie było zamiaru stworzenia działającego koszyka (nawet wersji demo), tylko pokazać kilka ficzerów języka
https://phpkurs.pl/ponowne-uzycie-kodu/

  • Zgaduję, ze nawet jak trafisz na jakiś koszyk mający nadzieje działać, przekracza to o kilka rzędów wielkości Twoją możliwość oceny, o co chodzi, i odkąd dokąd kod skopiować
0

@AnyKtokolwiek: Przejrzałem kilka jego poprzednich wątków, przecież to jest zwykły troll.

0

Jak napisać do tego konstruktor ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1