webbMedlem sedan juni 201025 inlägg Hej,
Jag har skapat en enkel varukorg med hjälp av session vektor, utvalda produkter lagras i tabellen. Hittills har jag inga problem!
Jag önskar kunna ta bort (med hjälp av x) enskild produkt från tabellen/vektorn, men jag kommer inte åt den.
Är det någon SESSION-expert som kan hjälpa till?
Tack i för hand!
Utskrift av tabellen/session vektor:
Art01 produkt_1 antal_1 pris_1 bild_1 x
Art02 produkt_2 antal_2 pris_2 bild_2 x
Art03 produkt_3 antal_3 pris_3 bild_3 x
Art04 produkt_4 antal_4 pris_4 bild_4 x
Koden:
$_SESSION["varukorg"][] = array(
"artikel" => $_SESSION['artikel'],
"produkt" => $_SESSION['produkt'],
"antal" => $_SESSION['antal'],
"pris" => $_SESSION['pris'],
"image_cart" => $_SESSION['image']
);
foreach($_SESSION['varukorg'] as $cart)
{
echo "<p>" . $cart['artikel'] . "</p>";
echo "<p>" . $cart['produkt'] . "</p>";
echo "<p>" . $cart['antal'] . "</p>";
echo "<p>" . $cart['pris'] . "</p>";
echo "<p><a href=#><img src=\"/images/produkter/ $cart['image_cart'] \" width=100 height=100/></a></p>";
echo "<p><a href=#>Ta bort</a></p>";
}
aronMedlem sedan mars 2004485 inlägg webbMedlem sedan juni 201025 inlägg
aron skrev:
Funkar det inte att använda:
unset($_SESSION['varukorg''][x])
Se info under "Useful functions" på:
http://php.net/manual/en/language.types.array.php
http://www.neowin.net/forum/topic/420778-php-array-delete-row/
http://www.satya-weblog.com/2009/10/php-session-array.html
Tack för svaret!
Nej det funkar inte, jag har test enligt följande:
$art = $cart['artikel'];
echo "<a href=varukorg.php?del_cart=0>Ta bort</a>";
if(isset($_REQUEST['del_cart'])) {
unset($_SESSION['varukorg']['$art']);
}
aronMedlem sedan mars 2004485 inlägg
webb skrev:
Tack för svaret!
Nej det funkar inte, jag har test enligt följande:
$art = $cart['artikel'];
echo "<a href=varukorg.php?del_cart=0>Ta bort</a>";
if(isset($_REQUEST['del_cart'])) {
unset($_SESSION['varukorg']['$art']);
}
x ska väll inte var = '$art' utan nyckeln som används av arrayen. Om du inte använder t.ex. art. numret när du lägger in dem (du gjorde inte det i exemplet utan bara []) så får dom väll 0..n som nummer.
För att ha lite ordning och för en bättre funktion (som aron ovan också påpekar) så får du använda artikel-id som nyckel för din array:
$varukorg[$artnum] = array(
"id" => $artnum,
"namn" => "Artikelnamn",
"antal" => 1,
...
);
När du t.ex. lägger till en produkt, får du kolla om varan redan finns i vaukorgen och ist. ändra antal av den med:
$artnum = $_GET['artnum'];
$namn = $_GET['namn'];
if(isset($varukorg[$artnum])){
// ändra antal istället för att lägga till produkten:
$varukorg[$artnum]["antal"] += 1;
}else{
// varan finns _inte_ sedan tidigare, lägg till den:
$varukorg[$artnum]["id"] = $artnum;
$varukorg[$artnum]["namn"] = $namn;
$varukorg[$artnum]["antal"] = 1;
}
På samma sätt om du ändrar antal av en vara "nedåt":
$artnum = $_GET['artnum'];
if(isset($varukorg[$artnum])){
$varukorg[$artnum]["antal"] -= 1;
}
Och när du tar bort:
$artnum = $_GET['artnum'];
if(isset($varukorg[$artnum])){
unset($varukorg[$artnum]);
}
Nu har du en del kod att bygga vidare på. Lycka till,
webbMedlem sedan juni 201025 inlägg Tack för hjälpen, nu funkar det!
..och så vore det toppen om du trycker "Markera som lösning" på mitt inlägg ovan om det var det som hjälpte dig på traven!