Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [CodeIgniter] Cart class ograniczona ilość produktów
newicz
post 22.08.2010, 11:42:54
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 9.09.2009

Ostrzeżenie: (0%)
-----


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>


Go to the top of the page
+Quote Post
phpion
post 22.08.2010, 12:07:58
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Był całkiem niedawno podobny problem. Poszukaj w tym dziale.
Go to the top of the page
+Quote Post
newicz
post 22.08.2010, 20:30:03
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 9.09.2009

Ostrzeżenie: (0%)
-----


Szukałem już... czy mógłby mi odpisać ktoś kto zna rozwiązanie problemu?
Go to the top of the page
+Quote Post
phpion
post 23.08.2010, 06:39:15
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post
newicz
post 26.08.2010, 09:39:24
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 9.09.2009

Ostrzeżenie: (0%)
-----


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. }


Ten post edytował newicz 23.08.2010, 19:21:03
Go to the top of the page
+Quote Post
sebolowicz
post 27.01.2011, 14:23:29
Post #6





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 23.12.2009

Ostrzeżenie: (0%)
-----


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 :/
Go to the top of the page
+Quote Post
penta997
post 7.02.2011, 06:14:57
Post #7





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 7.02.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.06.2025 - 22:22