Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CodeIgniter]Problem z koszykiem sklepowym
Forum PHP.pl > Forum > PHP > Frameworki
penta997
Witam. Pisze ksiegarnie internetowa, w zasadzie to jest moj pierwszy projekt w code igniterze, wszystko juz mam prawie gotowe, ale zostal mi jeszcze koszyk. Biblioteka cart nie do konca sprawowala sie tak jak chcialem, wiec postanowilem ze zrobie koszyk sam, w oparciu o cookie. Ale pojawily sie problemy. Najwiekszy z nich to zmiana ilosci ksiazkek po uprzednim wpisaniu jej w polu teksowym, ogolnie kwestia formularza i wyswietlania go w odpowiednim widoku.
oto moj kontroler:
Funkcja dodajaca dane do cookie
  1.  
  2. function addCards($segment=1, $price='')
  3. {
  4.  
  5. setcookie("cookie[$id]", 1, time()+3600*2, '/', '', '0');
  6. //echo 'value2 '.$value2.'- value1 '.$value1.'= value '.$value;
  7. redirect('koszyk/aktualna_cena');
  8.  
  9. }
  10.  
  11.  




funckja wyswietlajaca widok:
  1.  
  2. function order_product()
  3. {
  4. $widok['left'] = $this->get_category();
  5. $widok['right'] = $this->get_bestseller();
  6. //$widok['zakupy'] = $this->sum_all();
  7. //$widok['licznik'] = $this->counter();
  8. $widok['tytul'] = 'Twoj koszyk';
  9. $pozycja = 0;
  10.  
  11. $widok['center'] ='
  12. <table class="basket">
  13. <tr>
  14. <th>Pozycja</th>
  15. <th style="text-align: center;">Nazwa</th>
  16. <th>Ilość</th><th>Cena brutto</th><th>Wartość</th>
  17. <th>Usuń</th>
  18. </tr>';
  19.  
  20. if (isset($_COOKIE['cookie']))
  21. {
  22. foreach ($_COOKIE['cookie'] as $name => $value)
  23. {
  24. $pozycja++;
  25. $query = $this->Kategorie_model->get_books_by_ID($name);
  26. $widok['center'] .= $this->load->view('Ksiegarnia/order_product_view', array('data' => $query,'pozycja' =>$pozycja),True);
  27.  
  28. }
  29.  
  30. $widok['center'] .='</table>';
  31.  
  32.  
  33.  
  34.  
  35. }
  36.  
  37. $this->load->view('Ksiegarnia/index_logged',$widok);
  38. }



funnkcja obliczajaca cene:
  1. function aktualna_cena()
  2. {
  3. $zakupy = 0;
  4. if (isset($_COOKIE['cookie']))
  5. {
  6. foreach ($_COOKIE['cookie'] as $name => $value)
  7. {
  8.  
  9.  
  10. $query = $this->Kategorie_model->get_books_by_ID(mysql_real_escape_string(HTMLSpecialChars(addslashes($name))));
  11. if($query->num_rows >0)
  12. {
  13. foreach($query->result() as $item)
  14. {
  15. $cena = $item->BOOK_Price;
  16. }
  17. $zakupy += $cena*$value;
  18. }
  19. }
  20. }
  21. $this->session->set_userdata('zakupy',number_format($zakupy,2, '.', ''));
  22. redirect('koszyk/aktualna_ilosc');
  23.  
  24. }
  25.  

i widok:
  1. <?php foreach($data->result() as $item):?>
  2. <form action="<?=base_url()?>index.php/koszyk/zmien_ilosc/<?php $item->BOOK_ID;?>" method="POST">
  3. <tr>
  4. <td><?=$pozycja?></td>
  5. <td><?=$item->BOOK_Title?></td>
  6.  
  7. <td><input type = "text" class ="tekst" name="produkt_<?php $item->BOOK_ID;?>" value=""/></td>
  8. <td><input type="submit" class="sub" name="zmien" value = "Zmien"/>
  9. <input type="hidden" class="hid" name="zmien" value = "Zmien"/>
  10. </td>
  11. <td><?=number_format($item->BOOK_Price,2, '.', '')?>zł</td><td><?=anchor('koszyk/deleteCards/'.$item->BOOK_ID,'X');?></td>
  12. </tr>
  13. </form>
  14. <script type="tetext/javascript">
  15.  
  16. </script>
  17.  
  18. <?php endforeach;
  19. ?>
  20.  

Prosze o pomoc, bo dosc dlugo juz sie z tym mecze, i nie mam za bardzo pomyslu jak to rozwiazac....


szok
A dlaczemuż to biblioteka Cart nie pasuje do projektu? Działa idealnie, można ją rozbudować o swojego metody itp.
Nie wymyślajmy koła na nowo skoro ktoś już coś dobrze napisał smile.gif


Możesz mi jeszcze napisać dlaczego w $widok['center'] = ładujesz kod HTML'a ? skoro widoki są od tego,
Do widoku powinieneś przekazać tylko tablice z danymi do wyświetlenia. (tzn takie jest założenie)

smentek
Odpusc sobie ta ksiegarnię twoim 1 projektem niech będzie koszyk. Potrzebujesz 2 obiektów Basket i Product.
Do obadania tworzenie obiektów, sesja.
Przykład do dalszej rozbudowy:
  1. class Basket
  2. {
  3.  
  4. $products = array();
  5.  
  6. public function __construct()
  7. {
  8. //obsluga cookie lub sesji
  9. }
  10.  
  11. public function add( Product $product ){
  12. $this->products[] = $product;
  13. }
  14. public function remove( $productId ){}
  15. public function removeAllProducts(){}
  16. public function store(){}
  17. public function priceOfAllProducts(){}
  18. }
  19.  
  20. addProductControler( $productId )
  21. {
  22. $product = new Product( $productId );
  23. $basket = new Basket();
  24. $basket->addProduct( $product );
  25. $basket->store();
  26. }

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.