Kod:
class Koszyk {
var $tab_koszyka = array(array()) ;
function Dodaj_do_tablicy($koszyk){ $x=0;
foreach($koszyk as $info => $ilosc)
{ $rzad = pobierz_dane_produktu($info) ;
$this->tab_koszyka[$x][0] = $rzad['lp'] ; $this->tab_koszyka[$x][1] = $rzad['kat'] ;
$this->tab_koszyka[$x][2] = $rzad['nazwa'] ; $this->tab_koszyka[$x][3] = $rzad['jpg'] ;
$this->tab_koszyka[$x][4] = $rzad['cena'] ; $this->tab_koszyka[$x][5] = $ilosc ;
$this->tab_koszyka[$x][6] = $this->oblicz_sume($rzad['cena'],$ilosc) ;
$x++ ; } return $x; }
function Info_Tabela_koszyka() { ?>
<table width='100%' cellpadding='5'><tr><th width='5%'>Lp</th><th width='15%'>Obrazek</th><th width='15%'>Nazwa Produktu</th>
<th width='15%'>Cena</th><th width='15%'>Ilość</th><th width='15%'>Suma</th></tr></table> <? }
function oblicz_sume($cena,$ilosc) { $suma = $cena * $ilosc ; return $suma ; }
function oblicz_wartosc($ile) { $wartosc=0;
for($x=0; $x < $ile; $x++) { $wartosc+= $this->tab_koszyka[$x][6] ; } return $wartosc; }
function suma_upust($wartosc) { $upust = 0;
for($x=0; $x<$wartosc; $x++) { if($x==10 || $x==15 || $x==25 || $x==60) $upust++ ;}
$suma = $wartosc - (($wartosc * $upust)/100) ; return $suma ; }
function pokaz_upust($wartosc) { $upust = 0;
for($x=0; $x<$wartosc; $x++) { if($x==10 || $x==15 || $x==25 || $x==60) $upust++ ;} return $upust; }
function wyswietl_koszyk($ile) {
for($x=0; $x<$ile; $x++) { $info = $this->tab_koszyka[$x][0] ; ?>
<table width='100%' cellpadding='5'><tr><th width='5%'>
<? echo $x; echo "<br><a href='?id=koszyk&page=usun&nr=$x' class='link3'>Usuń</a>" ;?></th>
<th width='15%'><img src="obrazki/<? echo $this->tab_koszyka[$x][3]; ?>" width="60" height="60"></th>
<th width='15%'><? echo $this->tab_koszyka[$x][2]; ?></th>
<th width='15%'><? echo number_format($this->tab_koszyka[$x][4],2,',',' '); ?> zł</th>
<th width='15%'><? echo $this->tab_koszyka[$x][5];
echo "<BR><a href='?id=koszyk&page=edytuj&nr=$x' class='link3'>Zmień</a>"?></th>
<th width='15%'><? echo number_format($this->tab_koszyka[$x][6],2,',',' '); ?> zł</th>
</tr></table> <? }}
function suma_koszyka($ile) {
$suma=$this->suma_upust($this->oblicz_wartosc($ile)) ; ?>
<table width='100%' cellpadding='5'><tr><th width='64%'>Suma</th>
<th width="18%">Upust przyznany : <? echo $upust=$this->pokaz_upust($this->oblicz_wartosc($ile)); ?> %</th>
<th width='18%'><font size="6"><? echo number_format($suma,2,',',' ') ; ?> zł</font></th>
</tr></table> <? }
function edycja_ilosci_produktu_koszyka($x) { ?> <table width="80%"><tr style="background: #f3f3f3;">
<td align="center"><B>Formularz zmiany ilości</B></td>
</tr>
<tr><td><form method="post" action="<? echo '?id=koszyk&page=zapis&nr='.$x ; ?>">
<table width="100%" border="0" cellpadding="5">
<tr><th><img src="obrazki/<? echo $this->tab_koszyka[$x][3]?>" width="60" height="60" /></th>
<th>Nazwa :<BR /><? echo $this->tab_koszyka[$x][2] ; ?></th>
<th><label>Ilość : <input type="text" name="ile" id="ile"
value="<? echo $this->tab_koszyka[$x][5];?>"></label></th>
<th><input type="submit" value="Zatwierdz" class="button"></th><th>Cena : <br />
<? echo number_format($this->tab_koszyka[$x][4],2,',',' '); ?> zł</th>
</tr></table></form></td></tr></table> <? }
}
?>
<?
ob_start();
session_start() ;
@ $nowy = $HTTP_GET_VARS['nowy'];
function poprawnosc_liczby($liczba) {
$test=preg_match('/^([A-Z]|Ć|Ł|Ń|Ś|ű|Ż){1}([A-Za-z]|Ę|Ó|Ł|Ś|Ą|Ż|ű|Ć|Ń|ę|ó|ł|ś|ą|ż|ź|ć|ń)+$/',$liczba);
if($liczba <= 0 || $liczba == ' ' || $test === TRUE) return FALSE ;
else return TRUE; }
if($nowy)
{ if(poprawnosc_liczby($_POST['ile'])===FALSE)
{ $url ='location:index.php?id=produkt&info='.$nowy; header($url); exit(); }
// wybrany nowy produkt
if(!isset($HTTP_SESSION_VARS['koszyk']))
{ $HTTP_SESSION_VARS['koszyk'] = array(); }
if(isset($HTTP_SESSION_VARS['koszyk'][$nowy]))
{ $HTTP_SESSION_VARS['koszyk'][$nowy] += $_POST['ile'];
header('location:index.php?id=koszyk') ; exit() ; }
else
{ $HTTP_SESSION_VARS['koszyk'][$nowy] = $_POST['ile'];
header('location:index.php?id=koszyk') ; exit() ; }
unset($_POST['ile']) ; }
if($HTTP_SESSION_VARS['koszyk'] && array_count_values($HTTP_SESSION_VARS['koszyk'])) {
$_SESSION['ile']=$kosz->Dodaj_do_tablicy($HTTP_SESSION_VARS['koszyk']) ;
switch($page) {
default:
$kosz->Info_Tabela_koszyka() ; echo '<hr>' ; $kosz->wyswietl_koszyk($_SESSION['ile']) ;
$kosz->suma_koszyka($_SESSION['ile']); echo "<br><br>"; Url('?id=koszyk&page=kasa','Do Kasy');
break;
case 'edytuj':
$kosz->edycja_ilosci_produktu_koszyka($nr) ;
break ;
case 'zapis':
$produkt = $kosz->tab_koszyka[$nr][0] ; $HTTP_SESSION_VARS['koszyk'][$produkt]=$_POST['ile'] ; unset($_POST['ile']) ;
header('location:index.php?id=koszyk') ; exit() ;
break;
case 'kasa':
from_dane() ;
break;
case 'usun':
$produkt = $kosz->tab_koszyka[$nr][0] ; unset($HTTP_SESSION_VARS['koszyk'][$produkt]) ;
header('location:index.php?id=koszyk'); exit();
break;
}} else {
echo '<p>Koszyk jest pusty. Zapraszam do obejrzenia produktów w Kategoriach lub zapraszam na strone główną.</p>' ; echo '<hr />'; }
ob_end_flush();
?>
Dana klasa napisana w php musi współpracować bazą danych. Ne wiem czy użyć sesji czy ciasteczek.
Jedynie musi zmieniać ilość w bazie danych. Resztę danych wysłać na @ kupującego wraz z ilością kupionych produktów