Stworzyłem koszyk oparty na sesiach. Do koszyka oprócz id i ilości muszę dodawać id_wybarwienia_drewna, nr_wybarwienia, id_tkaniny oraz nr_tkaniny.
Wszystko dobrze działa dopóki ktoś nie zachcę sobie kupić takiego samego przedmiotu tylko np z innym wybarwieniem drewna.
);
$_SESSION['koszyk']=$koszyk;
funkcja dodawania
function add($id, $id_wyb, $nr_wyb, $id_tka, $nr_tka, $ilosc){
$x=count($_SESSION['koszyk']['lp']); // ilosc rekordów w tablicy lp
$_SESSION['koszyk']['lp'][]=$x+1;
$_SESSION['koszyk']['id'][]=$id;
$_SESSION['koszyk']['id_wyb'][]=$id_wyb;
$_SESSION['koszyk']['nr_wyb'][]=$nr_wyb;
$_SESSION['koszyk']['id_tka'][]=$id_tka;
$_SESSION['koszyk']['nr_tka'][]=$nr_wyb;
$_SESSION['koszyk']['ilosc'][]=$ilosc;
}
funkcja aktualizacji która ma dodać do $ilosc jeden produkt, wtedy gdy wszystkie id,nr itd... są takie same.
function update($lp, $u_id, $u_id_wyb, $u_nr_wyb, $u_id_tka, $u_nr_tka, $u_ilosc){ // aktualizacja tablicy
$_SESSION['koszyk']['id'][$lp]=$u_id;
$_SESSION['koszyk']['id_wyb'][$lp]=$u_id_wyb;
$_SESSION['koszyk']['nr_wyb'][$lp]=$u_nr_wyb;
$_SESSION['koszyk']['id_tka'][$lp]=$u_id_tka;
$_SESSION['koszyk']['nr_tka'][$lp]=$u_nr_tka;
$_SESSION['koszyk']['ilosc'][$lp]=$u_ilosc;
}
wszystko osobno działa natomiast po połączeniu tego w jedno już nie jest tak dobrze
function add($id, $id_wyb, $nr_wyb, $id_tka, $nr_tka, $ilosc){
$x=count($_SESSION['koszyk']['lp']); // ilosc rekordów w tablicy lp
if(($kluczid == $id) and ($kluczid_wyb == $id_wyb) and ($klucznr_wyb == $nr_wyb) and ($kluczid_tka == $id_tka) and ($klucznr_tka == $nr_tka)){
$_SESSION['koszyk']['lp'][]=$x+1;
$_SESSION['koszyk']['id'][]=$id;
$_SESSION['koszyk']['id_wyb'][]=$id_wyb;
$_SESSION['koszyk']['nr_wyb'][]=$nr_wyb;
$_SESSION['koszyk']['id_tka'][]=$id_tka;
$_SESSION['koszyk']['nr_tka'][]=$nr_wyb;
$_SESSION['koszyk']['ilosc'][]=$ilosc;
}else{
$a=$_SESSION['koszyk']['ilosc'][$kluczid];
$a++;
update($kluczid, $id, $id_wyb, $nr_wyb, $id_tka, $nr_tka, $a);
}
}
Od razu dodam że pisałem to sam więc spodziewam się zrypki (IMG:
style_emoticons/default/wink.gif)
Już nieaktualne rozwiązanie znalazłem używając funkcji in_array.
function add($id, $id_wyb, $nr_wyb, $id_tka, $nr_tka, $ilosc){
$x=count($_SESSION['koszyk']['lp']); // ilosc rekordów w tablicy lp if((in_array($id,$_SESSION['koszyk']['id']) == TRUE) and
(in_array($id_wyb,$_SESSION['koszyk']['id_wyb']) == TRUE) and
(in_array($nr_wyb,$_SESSION['koszyk']['nr_wyb']) == TRUE) and
(in_array($id_tka,$_SESSION['koszyk']['id_tka']) == TRUE) and
(in_array($nr_tka,$_SESSION['koszyk']['nr_tka']) == TRUE)){
update($kluczid, $id, $id_wyb, $nr_wyb, $id_tka, $nr_tka, $ilosc+1);
}else{
$_SESSION['koszyk']['lp'][]=$x+1;
$_SESSION['koszyk']['id'][]=$id;
$_SESSION['koszyk']['id_wyb'][]=$id_wyb;
$_SESSION['koszyk']['nr_wyb'][]=$nr_wyb;
$_SESSION['koszyk']['id_tka'][]=$id_tka;
$_SESSION['koszyk']['nr_tka'][]=$nr_wyb;
$_SESSION['koszyk']['ilosc'][]=$ilosc;
}
}