Avatar billede krk Nybegynder
29. august 2005 - 19:27 Der er 8 kommentarer og
1 løsning

indkøbskurv og sessions

Hej
Jeg er ved at prøve og lave en WebShop- så det er stadig på begynder stadie - og jeg er her rendt ind i mit første problem.
Jeg trækker min vare liste fra en database hvor jeg bla. får felterne Vare_id, Vare_navn.
Ud fra hver vare i browersen skal brugeren ligge varen i indkøbskurven ved at klikke på en knap.
Her er det så min session kommer ind. Hvordan får jeg lagt vare i kurven/session så jeg senere kan hente den frem når jeg vil se alle mine vare i indkøbskurven.
Og hvordan foregår det når der skal ligges flere forskellige vare i kurven.
Jeg ved overhovedet ikke hvor jeg skal starte hennne, så vær sød og svar rimelig udførelig :-)

Hvis I skal bruge flere oplysninger siger I bare til
Avatar billede saucer Nybegynder
29. august 2005 - 20:32 #1
Hej

Jeg har selv en gang lavet en WebShop løsning hvor jeg brugte sessions til at holde styr på brugere som er ved at handle.

Det som jeg brugte var noget i stil med :

if(empty($_SESSION[user_session])){
 
    $user_session = substr(md5(uniqid(rand())), 0, rand(10, 20));
     
        $_SESSION[user_session] = $user_session;

}

Altså jeg opretter en session for hver bruger som kommer på siden med et tilfældig tal/bogstav navn som er fra 10 til 20 tegn. På den måde er jeg næsten sikker på at der ikke er to ens session på samme tid.

Husk også at slette data fra dit indkøbskurve efter XX min / timer så du minimere chancer for at der kommer en anden bruger 2 timer efter og få samme usernavn. For så vil han se indholdet af indkøbskurven som den anden bruger havde, hvis brugeren ikke bliv færdig med at handle ;)
Avatar billede coderdk Praktikant
29. august 2005 - 20:33 #2
<?php

  session_start(); // Skal være ØVERST de steder du vil bruge sessionsvariable
  if ( !isset( $_SESSION['kurv'] ) )
  {
      $_SESSION['kurv'] = array();
  }

  $_SESSION['kurv'][] = array( "Vare_id" => 123, "Vare_navn" => "Fire heste" );

?>

Her opretter jeg en sessionsvariabel hvis den ikke findes (initierer den til et tomt array) - Så smider jeg en vare i, som også er et array, med vareid og varenavn.

På de sider du vil bruge den kan du arbejde med den som på et alm. array. Du skal blot starte siden med session_start()...
Avatar billede krk Nybegynder
29. august 2005 - 21:11 #3
Jeg skal nok vende tilbage,jeg har bare ikke tid lige nu
Avatar billede krk Nybegynder
29. august 2005 - 21:23 #4
Jeg kan ikke helt få det til at virke.
På side id1.php printer den godt nok session_id ud som jeg beder den om, men skriver kun array - ikke hvad der findes i arrayen!! Hvad er det jeg gør forkert??

Min kode ser ud som følgende:

test.php:
<?php
session_start(); // Skal være ØVERST de steder du vil bruge sessionsvariable
  if ( !isset( $_SESSION['kurv'] ) )
  {
      $_SESSION['kurv'] = array();
  }

  $_SESSION['kurv'][] = array( "Vare_id" => 123, "Vare_navn" => "Fire heste" );

  print session_id() ;
print"<br>";


print"<a href='id1.php'>side 2</a>";
?>


id1.php:
<?php
session_start();

print session_id() ;
print"<br>";
print ucfirst($_SESSION['kurv']);

?>
Avatar billede coderdk Praktikant
29. august 2005 - 21:40 #5
Den er et array, så du skal tilgå den med f.eks.: $_SESSION['kurv'][0]['Vare_id']

id1.php:
<?php

  session_start();

  print session_id() ;
  print"<br>";
  print "<pre>";
  var_dump( $_SESSION['kurv'] );
  print "</pre>";

?>
Avatar billede krk Nybegynder
31. august 2005 - 12:51 #6
Undskyld ventetiden.
Jeg har fået det til at virke rimeligt. Nu skriver den bare for meget ud:-)
Jeg ville gerne have at der bare stod Fire heste og ikke ( string(10) "Fire heste"  )

Nu ser min kode sådan ud:
Side1:
<?php
session_start(); // Skal være ØVERST de steder du vil bruge sessionsvariable
  if ( !isset( $_SESSION['kurv'] ) )
  {
      $_SESSION['kurv'] = array();
  }

  $_SESSION['kurv'][] = array( "Vare_id" => 123, "Vare_navn" => "Fire heste" );

  print session_id() ;
print"<br>";

print"<a href='id1.php'>side 2</a>";
?>


Side2:

<?php
session_start();

print session_id() ;
print"<br>";
//print ucfirst($_SESSION['kurv']);
print "<br>";
  var_dump($_SESSION['kurv'][0]['Vare_navn'] );

?>
Avatar billede coderdk Praktikant
31. august 2005 - 15:33 #7
print $_SESSION['kurv'][0]['Vare_navn'];

Du kan også løbe det igennem med et loop og skrive alt ud:

foreach ( $_SESSION['kurv'] as $vare )
{
  echo "Vare ID: " . $vare['Vare_id'] . " Navn: " . $vare['Vare_navn'] . "<br>";
}
Avatar billede krk Nybegynder
02. september 2005 - 09:02 #8
Jeg skal nok lige få det testet, men min egen computer  er gået ned.
Der kan godt gå et par dage
Avatar billede krk Nybegynder
09. september 2005 - 10:02 #9
Det virker fint nu. Tak for hjælpen, nu prøver jeg selv at arbejde videre.
Undskyld den lange ventetid men jeg havde somsagt problemer med min pc.
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