Avatar billede page Nybegynder
17. januar 2007 - 15:03 Der er 13 kommentarer og
1 løsning

Sessions og dimentionelle arrays

Heps,

Jeg har nu leget med sessions i et stykke tid. Men jeg forstår ikke helt hvordan jeg i _SESSION får puttet flere værdier ind, på samme plads i "arrayet"

Jeg har kigget på http://www.eksperten.dk/spm/488001 og leget med det, omkring hvordan jeg sender frem og tilbage. Og hvordan jeg "henter" værdien. Det er der jo sådan set ikke noget hokupokus ved.

Men der er kun tale om een værdi der sættes ind, sådan som jeg lige forstår det.
Hvis jeg nu ønsker at indsætte 3 værdier i arrayet, hvordan gør jeg så?

Lad os antage at at når jeg tilføjer en ting så kaldes
add.php?id=123&quantity=3&size=3
Hvor id er vareid, quantity er antal og size er størrelse.

Hvordan smider jeg alle 3 informationer ind i arrayet?
Avatar billede mcgoat Nybegynder
17. januar 2007 - 15:07 #1
$_SESSION[$_GET['id']]['quantity'] = $_GET['quantity'];
$_SESSION[$_GET['id']]['size'] = $_GET['size'];

er ikke testet dog, kan ikke huske om man kan gøre sådan.
Avatar billede nico26 Nybegynder
17. januar 2007 - 15:08 #2
session objektet er bare en hashtabel

$_SESSION['id'] = $_GET['id'];
$_SESSION['quantity'] = $_GET['quantity'];
Avatar billede mcgoat Nybegynder
17. januar 2007 - 15:10 #3
nico. hvad hvis man skal have flere ting lagt ind så? kan jo ikke bare overskrive hvad der allerede ligger så.

Noget jeg engang brugte til en indkøbskurv:

    if(isset($_SESSION['products'])) // Ligger der nogle produkter i session?
    {
        $pieces = sizeof($_SESSION['products']); // Hvor mange produkter der ligger
    }
    else
    {
        $pieces = 0; // Ingen produkter
    }
    $_SESSION['products'][$pieces]['prod_id'] = $_GET['prodid'];
    $_SESSION['products'][$pieces]['prod_amount'] = $_GET['amount'];    $_SESSION['products'][$pieces]['prod_price'] = $row['prod_price'];    $_SESSION['products'][$pieces]['prod_name'] = $row['prod_name'];    $_SESSION['products'][$pieces]['prod_stock'] = $row['prod_stock'];
Avatar billede mcgoat Nybegynder
17. januar 2007 - 15:11 #4
gik da et eller andet galt med formateringen der :P
Avatar billede page Nybegynder
17. januar 2007 - 15:17 #5
Det er meningen at der skal ligge flere ting, og den skal derfor ikke overskrive, det der ligger der inde i forvejen.

Jeg kigger lige på

mcgoat
17/01-2007 15:10:43
Avatar billede nico26 Nybegynder
17. januar 2007 - 15:22 #6
sorry, fik ikke læst apm ordentligt
Avatar billede page Nybegynder
17. januar 2007 - 15:33 #7
mcgoat: Hvordan "printer" du det ud? jeg kan ikke se om det virker før jeg kan få det ud på en led.
Avatar billede mcgoat Nybegynder
17. januar 2007 - 15:35 #8
for($i = 0; $i < sizeof($_SESSION['products']); $i++)
{
  echo $_SESSION['products'][$i]['prod_id'];
  echo $_SESSION['products'][$i]['prod_amount'];
}


osv, så kører den alle produkter igennem og printer dem
Avatar billede page Nybegynder
17. januar 2007 - 15:52 #9
Det virker perfekt..

Jeg har dog lige et spørgsmål il denne:

$_SESSION['products'][$pieces]['prod_price'] = $row['prod_price'];

Hvad er $row['prod_price'];???

Hvor får du den værdi fra?
Avatar billede mcgoat Nybegynder
17. januar 2007 - 15:55 #10
noget jeg hentede fra en database :)

klippede bare noget af scriptet ud til dig :)

men basicly virker det sådan:

$_SESSION['her_har_jeg_mine_produkter'][0]['id'] = $id;
$_SESSION['her_har_jeg_mine_produkter'][0]['navn'] = "256 MB RAM";
$_SESSION['her_har_jeg_mine_produkter'][0]['pris'] = "299";

$_SESSION['her_har_jeg_mine_produkter'][1]['id'] = $id;
$_SESSION['her_har_jeg_mine_produkter'][1]['navn'] = "Printer";
$_SESSION['her_har_jeg_mine_produkter'][1]['pris'] = "588";

$_SESSION['her_har_jeg_mine_produkter'][2]['id'] = $id;
$_SESSION['her_har_jeg_mine_produkter'][2]['navn'] = "Keyboard";
$_SESSION['her_har_jeg_mine_produkter'][2]['pris'] = "155";

håber det kunne bruges :)
Avatar billede page Nybegynder
17. januar 2007 - 15:59 #11
Ok.. Det vil sige at hvis jeg vil smide en variable jeg har på siden ind, så kommer det til at hedde:

$_SESSION['her_har_jeg_mine_produkter'][0]['variable'] = $min_varible;

Nu er det et tænkt eksempel, men for forståelsens skyld :)
Avatar billede mcgoat Nybegynder
17. januar 2007 - 16:03 #12
yep. så bliver den variabel smidt ind på plads 0 i 'her_har_jeg_mine_produkter'
og så kan du så smide den næste ind på plads 1 osv
Avatar billede page Nybegynder
17. januar 2007 - 16:07 #13
Jeg takker mange gange

Hvis andre skulle få lyst, så endte det med at se sådan her ud:

catalog.php

<?php
session_start(); 
   
echo "<a href='add.php?id=2&quantity=3&size=3'>produkt 1</a><br>";
echo "<a href='add.php?id=3&quantity=2&size=3'>produkt 2</a><br>";


for($i = 0; $i < sizeof($_SESSION['products']); $i++)
{
  echo $_SESSION['products'][$i]['prod_id'];
  echo $_SESSION['products'][$i]['prod_size'];
  echo $_SESSION['products'][$i]['prod_antal'];
  echo "<br>";
}
?>
Avatar billede page Nybegynder
17. januar 2007 - 16:08 #14
hov kom til at trykke 'send'

add.php

<?php   
    session_start();
   
    if(isset($_SESSION['products'])) // Ligger der nogle produkter i session?
    {
        $pieces = sizeof($_SESSION['products']); // Hvor mange produkter der ligger
    }
    else
    {
        $pieces = 0; // Ingen produkter
    }
    $_SESSION['products'][$pieces]['prod_id'] = $_GET['id']; 
    $_SESSION['products'][$pieces]['prod_size'] = $_GET['size']; 
    $_SESSION['products'][$pieces]['prod_antal'] = $_GET['quantity'];   
   
header('location:catalog.php');
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester