Witam, otóż nie jestem zbyt ogarnięty w PHP. Bynajmniej nie na tyle by załapać tworzenie koszyka do sklepu.
Mam taki oto kod:
<?php
function koszyk(){
//Sprawdzenie, czy użytkownik nie dodał większej ilości produktu niż w bazie
$cart = mysql_query("SELECT * FROM asortyment WHERE nazwa = '$nazwaproduktu'"); if ($iloscproduktu > $cartrow['ilosc']){
$iloscproduktu=$cartrow['ilosc'];
}
//
$idproduktu = filter_var($_POST['id'], FILTER_SANITIZE_STRING);
$iloscproduktu = filter_var($_POST['ilosc'], FILTER_SANITIZE_NUMBER_INT);
$nowy_produkt = array('nazwa'=>$nazwaproduktu, 'id'=>$idproduktu, 'ilosc'=>$iloscproduktu, 'cena'=>$cenaproduktu);
if(isset($_SESSION["koszyk"])){ $found = false;
foreach ($_SESSION["koszyk"] as $cartitem)
{
if($cartitem["id"] == $idproduktu){
$produkt[] = array('nazwa'=>$nazwaproduktu, 'id'=>$idproduktu, 'ilosc'=>$iloscproduktu, 'cena'=>$cenaproduktu); $found = true;
}else{
$produkt[] = array('nazwa'=>$nazwaproduktu, 'id'=>$idproduktu, 'ilosc'=>$iloscproduktu, 'cena'=>$cenaproduktu); }
}
if($found == false)
{
$_SESSION["koszyk"] = array_merge($produkt, $nowy_produkt); }else{
$_SESSION["koszyk"] = $produkt;
}
}else{
$_SESSION["koszyk"] = $nowy_produkt;
}
}
?>
<?php
function koszykmenu(){
if(isset($_SESSION["koszyk"])) {
foreach ($_SESSION["koszyk"] as $cart)
{
}
}else{
echo "Twój koszyk jest pusty!"; }
}
?>
Próbując dodać coś do kosza np. 1 produkt, nazwa produktu wyświetla się 8 razy, a gdy dodam kolejny to nazwa wyświetla się tylko tego drugiego produktu i to 16 razy, gdzie może tkwić błąd? Pozdro.
Okej doprowadziłem ten koszyk do takiej postaci, że gdy dodanie pierwszego produktu jest okej, aczkolwiek dodanie kolejnego skutkuje tym, że jest on nadpisywany i w rezultacie mogę mieć tylko jeden.
Skrypt odpowiadający za dodawanie i usuwanie produktów ze zmiennej sesyjnej:if(!empty($_GET["koszyk"])) { switch($_GET["koszyk"]) {
case "add":
if ( isset($_POST['id']) ){ $koszykprodukt = mysql_query("select * from asortyment where id_towaru = '$idtowaru'"); if ($Addrow['ilosc']<$_POST['ilosc']){
$_POST['ilosc']=$Addrow['ilosc'];
}
$nowy_towar = array(array('nazwa'=>$Addrow['nazwa'], 'id_towaru'=>$Addrow['id_towaru'], 'ilosc'=>$_POST['ilosc'], 'cena'=>$Addrow['cena'])); if (isset($_SESSION['koszyk'])){ foreach ($_SESSION['koszyk'] as $dodaj_towar){
if ($dodaj_towar['id_towaru']==$_POST['id']){
$towar[] = array('nazwa'=>$dodaj_towar["nazwa"], 'id_towaru'=>$dodaj_towar["id_towaru"], 'ilosc'=>$_POST['ilosc'], 'cena'=>$Addrow["cena"]); $istnieje = TRUE;
}else{
$towar[] = array('nazwa'=>$Addrow['nazwa'], 'id_towaru'=>$Addrow['id_towaru'], 'ilosc'=>$_POST['ilosc'], 'cena'=>$Addrow['cena']); $istnieje = FALSE;
}
}
if (istnieje == TRUE){
$_SESSION["koszyk"] = $towar;
}else{
$_SESSION["koszyk"] = array_merge($towar, $nowy_towar); }
}else{
$_SESSION['koszyk']=$nowy_towar;
}
}
break;
case "remove":
foreach ($_SESSION['koszyk'] as $usun_towar){
if($_GET["id"] == $usun_towar['id_towaru']){
unset($_SESSION["koszyk"][$usun_towar]); }
}
break;
default:
break;
}
}
Skrypt wyświetlający produkty w tabeli:if(isset($_SESSION["koszyk"])) {
echo "Produkty w koszyku: <br>"; echo "<table class='tabelka'>"; echo "<td class='tabelka_nazwy'>Usuń</td>"; echo "<td class='tabelka_nazwy'>Nazwa karty</td>"; echo "<td class='tabelka_nazwy'>Ilosc</td>"; echo "<td class='tabelka_nazwy'>Cena</td></font>"; echo "<td class='tabelka_nazwy'>Suma</td></font>"; foreach ($_SESSION["koszyk"] as $cart){
echo "<tr class='swap'>"; echo "<td><a class='links2' href='koszyk.php?koszyk=remove&id=".$cart['id_towaru']."'>Usuń</a></td>"; echo "<td>".$cart['nazwa']."</td>"; echo "<td>".$cart['ilosc']." szt.</td>"; echo "<td>".$cart['cena']."zł</td>"; $suma=$cart['cena']*$cart['ilosc'];
$razem=$razem+$suma;
echo "<td>".$suma."zł</td>"; }
echo "<b>Razem: </b>".$razem."zł"; if (!empty($_POST['link'])){
}else{
$_POST['link']="katalog.php";
}
echo "<center><b><a href='".$_POST['link']."' class='links2'>Kontynuuj zakupy</a></b></center>"; }else{
echo "<b>Twój koszyk jest pusty!</b>"; }
}
Katalog produktów:if ($obAmount==0){
echo '<font size="5">Wyniki wyszukiwania: </font><br>'; echo '<font color="red" size="4">Nic nie znaleziono!</font>'; echo '<br><br><br><br><br><br><br><br>'; }else{
echo '<font size="5">Wyniki wyszukiwania: </font><br>'; echo'Znaleziono: '.$obAmount.' produktów<br /><br />'; echo "<table class='tabelka'>"; echo "<td class='tabelka_nazwy' onclick=''>Obrazek</td>"; echo "<td class='tabelka_nazwy'>Nazwa karty</td>"; echo "<td class='tabelka_nazwy'>Ilosc</td>"; echo "<td class='tabelka_nazwy'>Stan</td>"; echo "<td class='tabelka_nazwy'>Edycja</td>"; echo "<td class='tabelka_nazwy'>Cena</td></font>"; echo "<td class='tabelka_nazwy'>Koszyk</td></font>"; for($x=0;$x<$obAmount;$x++)
{
echo "<tr class='swap'>"; echo "<td><img class='image' align='center' src='images/cards/".$row['id_towaru'].".jpg'></img></td>"; echo "<td>".$row['nazwa']."</td>"; echo "<td>".$row['ilosc']."</td>"; echo "<td>".$row['stan']."</td>"; echo "<td>".$row['edycja']."</td>"; echo "<td>".$row['cena']."zł</td>"; echo "<form method='POST' action='koszyk.php?koszyk=add'>"; echo "<td><input type='hidden' name='id' value='".$rowcat['id_towaru']."'><input type='hidden' name='link' value='search.php?query=".$_GET['query']."&sort=".$_GET['sort']."'></input></input><input type='text' name='ilosc' value='1' maxlength='3' size='1px' onclick='$(this).select();'></input><input type='submit' value='Dodaj'></input></ br>"; }