Podgląd tablicy:
( [0] => Towar Object ( [id:protected] => 126 [nazwa:protected] => Body Pawełek [cena:protected] => 21.00,21.00,21.00,23.00,23.00 [rozmiar:protected] => 62,68,74,80,86 [opis:protected] => opis [data_dodania:protected] => 2009-07-17 08:21:21 [small:protected] => galeria/thumb/thumb_1247811681.jpg [big:protected] => galeria/image/image_1247811681.jpg [small2:protected] => [big2:protected] => [second_pict:protected] => n [active:protected] => t [dostepnosc:protected] => produkt dostępny [nowosci:protected] => n [nowosci_time:protected] => 0 [promocje:protected] => n [promocje_time:protected] => 0 [kolor:protected] => multikolor [visits:protected] => 7 [data_aktualizacji:protected] => 2010-10-13 12:31:53 [slowa_kluczowe:protected] => [pack_size:protected] => 1 [vat:protected] => 0.22 ( [126] => multikolor ) ( [126] => 3 ) ( [126] => 62 ) ( [126] => 21.00 ) ) )
W "zwykłej" tablicy byłoby to coś na wzór:
public function refresh($nr) { if ($nr<0 || $nr>$this->counter()) return 0; foreach ($this->list as $nr=>$towar) { if ($towar != NULL) { $this->list[$nr] = $_POST['ilosc'][$id]; } } return $this->list[$nr]; }
==========
Fragmenty kodu
==========
Produkty:
class Towar extends basicElement { protected $id; protected $nazwa; protected $cena; protected $rozmiar; protected $opis; protected $data_dodania; protected $small; protected $big; protected $small2; protected $big2; protected $second_pict; protected $active; protected $dostepnosc; protected $nowosci; protected $nowosci_time; protected $promocje; protected $promocje_time; protected $kolor; protected $visits; protected $data_aktualizacji; protected $slowa_kluczowe; protected $pack_size; protected $vat; protected $kolor2; protected $ilosc; protected $rozmiar2; protected $cena2; public function __construct($row,$kolor,$ilosc,$rozmiar,$cena) { $this->id = $row[0]; $this->nazwa = $row[1]; $this->cena = $row[2]; $this->rozmiar = $row[3]; $this->opis = $row[4]; $this->data_dodania = $row[5]; $this->small = $row[6]; $this->big = $row[7]; $this->small2 = $row[8]; $this->big2 = $row[9]; $this->second_pict = $row[10]; $this->active = $row[11]; $this->dostepnosc = $row[12]; $this->nowosci = $row[13]; $this->nowosci_time = $row[14]; $this->promocje = $row[15]; $this->promocje_time = $row[16]; $this->kolor = $row[17]; $this->visits = $row[18]; $this->data_aktualizacji = $row[19]; $this->slowa_kluczowe = $row[20]; $this->pack_size = $row[21]; $this->vat = $this->showVat(); $this->kolor2 = $kolor; $this->ilosc = $ilosc; $this->rozmiar2 = $rozmiar; $this->cena2 = $cena; } }
Dodawanie produktu do koszyka:
$ilosc = $_POST['ilosc']; $kolor = $_POST['kolor']; $rozmiar = $_POST['rozmiar']; $query = "SELECT * FROM `towar` WHERE `id`='$id'"; $result = $db->Execute($query); $row = $result->FetchRow(); $towar = new Towar($row,$kolor,$ilosc,$rozmiar,$cena); $koszyk->doKoszyka($towar);
koszyk.lib.php
public function doKoszyka($towar) { $this->push($towar); return 1; }
W czym mam problem:
jestem w klasie o nazwie Koszyk i chciałbym za pomocą funkcji refresh() zmienić wartość pola 'ilosc' danego produktu na tą podaną przez użytkownika za pomocą metody $_POST().
Wnioskuję, że trzeba skorzystać z magicznych funkcji __get() oraz __set().
do pliku koszyk.lib.php dopisałem te dwie funkcje:
public function __get($name) { return $this->list[$name]; } public function __set($name, $value) { $this->list[$name] = $value; }
Ale po wywołaniu __set() moja tablica wygląda następująco:
( [0] => Towar Object ( [id:protected] => 126 [nazwa:protected] => Body Pawełek [cena:protected] => 21.00,21.00,21.00,23.00,23.00 [rozmiar:protected] => 62,68,74,80,86 [opis:protected] => opis [data_dodania:protected] => 2009-07-17 08:21:21 [small:protected] => galeria/thumb/thumb_1247811681.jpg [big:protected] => galeria/image/image_1247811681.jpg [small2:protected] => [big2:protected] => [second_pict:protected] => n [active:protected] => t [dostepnosc:protected] => produkt dostępny [nowosci:protected] => n [nowosci_time:protected] => 0 [promocje:protected] => n [promocje_time:protected] => 0 [kolor:protected] => multikolor [visits:protected] => 7 [data_aktualizacji:protected] => 2010-10-13 12:31:53 [slowa_kluczowe:protected] => [pack_size:protected] => 1 [vat:protected] => 0.22 ( [126] => multikolor ) ( [126] => 3 ) ( [126] => 62 ) ( [126] => 21.00 ) ) [ilosc:protected] => 15 // zapis po wywołaniu __set() )
Ktoś pomoże? Pogubiłem się w tym wszystkim. Zaćmienie totalne. Będę wdzięczny za wszelkie wskazówki.