Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CodeIgniter] Cart class ograniczona ilość produktów
Forum PHP.pl > Forum > PHP > Frameworki
newicz
Witam!

Natrafiłem na baaaaardzo dziwny problem. Mianowicie, mam sobie kontroler dodający produkty do koszyka, oraz widok czytający zawartość koszyka. Gdy dodaje produkty wszystko idzie ok do czasu dodania 5 produktu, który się dodaje, ale po odświerzeniu znika. Uniemożliwia to dodanie więcej niż 4 produktów do karty...

Bardzo proszę o pomoc!

Dodawanie produktów do karty

Controller

  1. function add_to_cart()
  2. {
  3. $respone = $this -> shop_model -> add_to_cart();
  4.  
  5. switch ( $respone )
  6. {
  7. case '404':
  8. $this -> template -> load ('template', '404');
  9. break;
  10.  
  11. default:
  12. redirect('shop/category/2');
  13. break;
  14. }
  15. }


Model

  1. function add_to_cart()
  2. {
  3. $update = false;
  4.  
  5. foreach($this->cart->contents() as $item)
  6. {
  7. if($item['id'] == $this -> input -> post('id'))
  8. {
  9. $update_data = array(
  10. 'rowid' => $item['rowid'],
  11. 'qty' => $item['qty'] + $this -> input -> post('qty')
  12. );
  13.  
  14. $this->cart->update($update_data);
  15. $update = true;
  16. }
  17. }
  18.  
  19. if (!$update)
  20. {
  21. $this -> db -> where ('id', $this -> input -> post('id'));
  22. $this -> db -> where ('active', 1);
  23. $row = $this -> db -> get('products');
  24.  
  25. if ($row -> num_rows() == 0) return '404';
  26.  
  27. $row = $row -> row();
  28.  
  29. $data = array(
  30. 'id' => $row->id,
  31. 'name' => $row->name,
  32. 'price' => $row->price,
  33. 'qty' => $this -> input -> post('qty')
  34. );
  35.  
  36. $this -> cart -> insert ($data);
  37. }
  38.  
  39. return true;
  40. }


Wyświetlanie:

  1. <pre><?php print_r($this->cart->contents()); ?></pre>


phpion
Był całkiem niedawno podobny problem. Poszukaj w tym dziale.
newicz
Szukałem już... czy mógłby mi odpisać ktoś kto zna rozwiązanie problemu?
phpion
Z tego co pamiętam to chodziło o polskie znaki w nazwie produktu. Sprawdź czy ten piąty produkt nie ma właśnie polskich znaków w swojej nazwie.
newicz
Właśnie sęk w tym że był taki problem który wyeliminowałem. Wyłączyłem w Cart sprawdzanie nazwy... już nie wiem co mam robić

edit: Dla pewności sprawdziłem nawet jeżeli produkty nie mają polskich znaków w nazwie to i tak nie działa poprawnie...

No to teraz się uśmiejecie, zrobiłem dla testów 2 funkcje które znajdują się poniżej. Każdy z Was może to przetestować. Przy wywolaniu 'test' wszystko gra pięknie bo sa w karcie produkty, natomiast po przejsciu do test2 (listowanie identyczne jak w test) wyswietla sie tylko 5 produktów... I O CO CHODZI?!

Kod:

  1. function test ()
  2. {
  3. for ($i=1; $i<12; $i++)
  4. {
  5. $data = array(
  6. 'id' => $i,
  7. 'qty' => 1,
  8. 'price' => 18*$i,
  9. 'name' => 'Produkt nr.'.$i
  10. );
  11.  
  12. $this->cart->insert($data);
  13. }
  14. foreach($this->cart->contents() as $item)
  15. {
  16. echo $item['name'].'<br/>';
  17. }
  18.  
  19. }
  20.  
  21. function test2()
  22. {
  23. foreach($this->cart->contents() as $item)
  24. {
  25. echo $item['name'].'<br/>';
  26. }
  27. }
sebolowicz
Niestety mam taki sam problem. Tylko, że u mnie przechodzi do koszyka 8-9 produktów i nic więcej sad.gif
Oczywiście problem z nazwą i polskimi znakami już wykluczyłem. Produkty, które są wybierane przeze mnie jako 9-10 z kolei nie chcą się zapisać do koszyka, a gdy wybieram je wśród pierwszych 8 produktów wskakują do koszyka bez problemu :/
penta997
Stworz nowa tabele w bazie, do ktorej bedziesz pobierac dane sesyjne. Normalnie po dodaniu elementu do sesji, dane przechowywane sa w tabeli tymczasowej ktora ma tylko 4KB pojemnosci. Jezeli stworzysz tabele ci_session i ustawisz w config.php zeby CI sie do niej odwolywalo to nie powinienes miec limitow.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.