Formularz - problem z koszykiem

0

Witam. Tworze taki mini sklep. Mam problem przy napisaniu koszyka. A konkretnie chodzi mi o sama edycje ilosci zamawianych sztuk. Po dodaniu produktu do koszyka, obok kazdego z nich wyswietla mi sie pole textowe do ktorego wpisuje ilosc sztuk. Problem polega na tym ze nie do konca wiem jak pobrac te dane z formularza, dodac do obliczen wyswietlajacych sume oraz calkowita ilosc. Prosze o pomoc.

0

Zapisz sobie cały koszyk w tablicy z elementami typu: id produktu, nazwa produktu, ilość i to aktualizuj. W formularzu też możesz używać tablic.

Ilość: <input type="text" name="produkt[3]" value="5">

Wtedy wartość takiej zmiennej odczytasz z PHP:

$_POST['produkt'][3] // = 5
0

Napisalem to w ten sposob. Doda tylko ze pisze w Code Igniterze.
widok:

 

<?php
if($data->num_rows() > 0)
{
 foreach($data->result() as $item)
{

echo '<tr><td>'.$pozycja.'</td><td>'.$item->BOOK_Title.'</td><td><input type="text" name="produkt['.$pozycja.']" "value="'.$licznik.'"></td><td><td>'.form_submit('zmien', 'Zmien').'</td>'.number_format($price,2, '.', '').'zł</td><td>'.$this->input->post('il_szt').'</td><td>'.anchor('koszyk/deleteCards/'.$item->BOOK_ID,'X').'</td></tr>';
         //echo '<tr><td>'.$ilosc.'</td><td>'.$data['name'].'</td><td>'.form_input('il_szt',$data['qty']).'</td><td>'.$data['price'].'</td><td>'.$data['subtotal'].'</td><td>'.anchor('site/deleteCards/'.$data['rowid'],'X').'</td></tr>';
}
}


?>

a to funkcje liczace:

 

 function get_ilosc()
         {
            
         
            $nr = 0;
            if(isset($_COOKIE['cookie']))
            {
                foreach($_COOKIE['cookie'] as $value)
                {
                    $nr++;
                    $ilosc = $_POST['produkt'][$nr];
                    $zm = $ilosc;

                }
                return $zm;
            }
            else
            {
                $zm = 1;
                return $zm;
            }
            
             
             redirect($_SERVER['HTTP_REFFERER']);

         }


         function sum_all()
         {


             

           $suma = 0;


           if(isset($_COOKIE['cookie']))
           {
               $ilosc = $this->get_ilosc();
                foreach($_COOKIE['cookie'] as $value)
                {
                    if(isset($ilosc) && $ilosc>1)
                    {
                    $suma +=$value*$ilosc;
                    
                    }

                    else
                    {
                        $suma+=$value;
                    }
                }


                return number_format($suma,2, '.', '');
           }
           else
               return 0;





         }


         function counter()
         {
          
           $licznik = 0;
           $var=0;
           if(isset($_COOKIE['cookie']))
           {
                $ilosc = $this->get_ilosc();
                foreach($_COOKIE['cookie'] as $value)
                {

                    if(isset($ilosc) && $ilosc > 1)
                    {
                    $licznik++;
                    $var+=($licznik*$ilosc);
                    }
                    else
                    {
                        $var++;
                    }

                }


                return $var;
           }
           else
               return 0;


         }
       


i funkcja ktora wyswietla zawartosc

 

function order_product()
        {

            $widok['center'] = '';
             $widok['left'] = $this->get_category();
             $widok['right'] = $this->get_bestseller();
             $widok['zakupy'] = $this->sum_all();
                $widok['licznik'] = $this->counter();
             $widok['tytul'] = 'Twoj koszyk';
              //$licznik = $this->session->userdata('licznik') ? $this->session->userdata('licznik') : 0;
              $pozycja = 0;
              $ilosc = 0;
            if(isset($_COOKIE['cookie']))
            {
                $widok['center'] = form_open('site/get_ilosc').'<table class="basket">
                <tr><th>Pozycja</th><th style="text-align: center;">Nazwa</th><th>Ilość</th><th>Cena brutto</th><th>Wartość</th><th>Usuń</th></tr>';
                foreach($_COOKIE['cookie'] as $name => $value)
                {



                         $ilosc = $this->get_ilosc();
                         ++$pozycja;
                         $widok['center'] .= $this->load->view('Ksiegarnia/order_product_view',array('data' =>$this->Kategorie_model->get_books_by_ID($name),'price' => $value, 'pozycja' => $pozycja, 'licznik' => $this->get_ilosc()), True);

                }

            $widok['center'] .= '</table>'.form_close();
            $this->load->view('Ksiegarnia/index_logged', $widok);
            }
            else
            {
                $ilosc = 0;
                $widok['center'] = form_open('site/change_value').'<table class="basket">
                <tr><th>Pozycja</th><th style="text-align: center;">Nazwa</th><th>Ilość</th><th>Cena brutto</th><th>Wartość</th><th>Usuń</th></tr>';



                $widok['center'] .= $this->load->view('Ksiegarnia/order_product_view_empty',array('data' =>'brak','ilosc'=>$ilosc), True);


            $widok['center'] .= '</table>';
            $this->load->view('Ksiegarnia/index_logged', $widok);
            }

        }



ale nie dziala, nie ropoznaje mi nawet tablicy $_POST

0

Z tego, co pamiętam, to w CodeIgniter nie ma dostępu do tablicy $_POST, tylko trzeba używać $this->input->post().

0

to nic nie daje, efekt jest ten sam, A co do $this->input->post() nie tyle co trzeba, ale mozna, jezeli kozystasz z helpera forms. Ale standardowe tablice $_POST i $_GET powinny dzialac, bo zapis form_open('contr/fun') to nic innego jak przeslanie metoda post formularza o action = "adres/contr/fun"

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