Avatar billede pehory Nybegynder
14. februar 2005 - 00:06 Der er 1 kommentar og
1 løsning

Flere varer i session?

Hej eksperter

Jeg er i gang med at skulle udforme et mindre kurvsystem.
Jeg har læst lidt om sessions, men jeg har ikke helt fundet ud af hvordan jeg kan tilføje flere varer til min kurv. Med det jeg har nu er det kun den sidst tilføjede varer der vises. Dette er jo forståeligt nok da de har samme navn.
Men hvordan kan jeg give dem forskellige navne og så udskrive dem på en nem måde?

Mvh Peter
Avatar billede Slettet bruger
14. februar 2005 - 00:48 #1
Brug et array.

$_SESSION['varer'][]=$nytvarenr;

// Vareliste
echo '<ul>';
foreach($_SESSION['varer'] as $vare){
  echo '<li>' . $vare . '</li>';
}
echo '</ul>';
Avatar billede Slettet bruger
14. februar 2005 - 13:35 #2
Her er tre kodestumper, der er lidt mere avancerede. Det vil være en god ide at kontrollere om vareid er gyldigt også.

/*
  Tilføj en vare til kurv
  Modtager vareid som $_GET['vareid']
  Lægger 1 til $_SESSION['varer']['vareid']
*/

if(isset($_GET['vareid'])){
  if(!isset($_SESSION['varer'])){
    $_SESSION['varer']=array();
  }
  if(isset($_SESSION['varer'][$_GET['vareid']])){
    $_SESSION['varer'][$_GET['vareid']]++;
  } else {
    $_SESSION['varer'][$_GET['vareid']]=1;
  }
} else {
  echo "Fejl: Ingen vareid";
}

/*
  Fjern en vare fra kurv
  Modtager vareid som $_GET['vareid']
  Trækker 1 fra $_SESSION['varer']['vareid']
*/

if(isset($_GET['vareid'])){
  if(!isset($_SESSION['varer'])){
    $_SESSION['varer']=array();
  }
  if(isset($_SESSION['varer'][$_GET['vareid']]) && $_SESSION['varer'][$_GET['vareid']]>0){
    $_SESSION['varer'][$_GET['vareid']]--;
  } else {
    // Sætter til 0 og unsetter, fordi nogle gange lader unset til ikke at have effekt
    $_SESSION['varer'][$_GET['vareid']]=0;
    unset($_SESSION['varer'][$_GET['vareid']]);
  }
} else {
  echo "Fejl: Ingen vareid";
}

/*
  List varer i kurv
*/

$foerstelinie=true;
foreach($_SESSION['varer'] as $vareid => $antal){
  if($antal>0){
    if($foerstelinie){
      echo '<ul>';
      $foerstelinie=false;
    }
    echo '<li>' . $vareid . ': ' . $antal . 'stk.</li>';
  }
}
if(!$foerstelinie){
  echo '</ul>';
}
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