webForumDet fria alternativet

unset/ta bort data ur en multidiminensionell array...

6 svar · 786 visningar · startad av webb

webbMedlem sedan juni 201025 inlägg
#1

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
#2

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

webbMedlem sedan juni 201025 inlägg
#3

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
#4

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.

MickeA.comMedlem sedan feb. 20034 441 inlägg
#5

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
#6

Tack för hjälpen, nu funkar det!

MickeA.comMedlem sedan feb. 20034 441 inlägg
#7

..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!

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)