Avatar billede sebster Nybegynder
15. april 2004 - 13:03 Der er 11 kommentarer og
1 løsning

Opdater antallet i en session

Jeg sidder og leger med en indkøbskurv og har indtil videre fået en del til at virke. Men er stødt ind i et stort problem. Jeg vil gerne have at det skal være muligt at ændre antallet af en varer i indkøbskurven hvorefter man kan trykke update og så opdateres sessionen.

Mit script ser således ud:

<?php
session_start(); 

echo "<form action='add.php' method='POST'>";
echo "<input type='text' size='2' value='1' name='antal'>";
echo "<input type='text' size='2' value='et' name='id'>";
echo "<input type='submit' size='2' value='submit' name='submit'>";
echo "</form>";

echo "<form action='add.php' method='POST'>";
echo "<input type='text' size='2' value='1' name='antal'>";
echo "<input type='text' size='2' value='to' name='id'>";
echo "<input type='submit' size='2' value='submit' name='submit'>";
echo "</form>";

echo "<form action='add.php' method='POST'>";
echo "<input type='text' size='2' value='1' name='antal'>";
echo "<input type='text' size='2' value='tre' name='id'>";
echo "<input type='submit' size='2' value='submit' name='submit'>";
echo "</form>";

if (isset($_SESSION['shopcart'])) {
  echo "<strong>Your cart:</strong><br>";
 
  foreach (($_SESSION['shopcart']) as $id => $antal)
  {  if ($antal > 0) {
        echo "<form action='update.php' name='form2' method='POST'>";
        echo "<input type='text' size='2' name='" . $_SESSION['shopcart'] . "' value='". $antal . "'> $id <br>";
        echo "<input value='update' type='submit' name='submit'>";
        echo "</form>";
  }}
 
} else {

echo "kurven er tom";
}
?>
Avatar billede sebster Nybegynder
15. april 2004 - 13:05 #1
Glemte lige at tilføje at der ikke eksistere en fil endnu som hedder update men at filen add.php ser således ud:

<?php   
session_start(); 

$id = $_POST['id'];
$antal = $_POST['antal'];

if(!isset($_SESSION['shopcart']) || !isset($_SESSION['shopcart'][$id])) {
  $_SESSION['shopcart'][$id] = 0;
}
$_SESSION['shopcart'][$id] += $antal;

header('location:catalog.php');
?>
Avatar billede dennismp Nybegynder
15. april 2004 - 17:44 #2
update.php
<?php
session_start(); 

$id = $_POST['id'];
$antal = $_POST['antal'];

if(!isset($_SESSION['shopcart']) || !isset($_SESSION['shopcart'][$id])) {
  $_SESSION['shopcart'][$id] = 0;
}
$_SESSION['shopcart'][$id] = $antal;

header('location:catalog.php');
?>

er det dette du mener?
Avatar billede sebster Nybegynder
15. april 2004 - 17:54 #3
Det har jeg prøvet men den opdatere ikke. Det der skal ske er at i indkøbskurven hvor antallet står i et inputfield skal der kunne ændres antal, således at når der senere kobles priser på vil den opdatere antal men også priser. men ved ikke om det er fordi jeg sender variablen/sessionen forkert afsted???

dette ser sådanne ud:

if (isset($_SESSION['shopcart'])) {
  echo "<strong>Your cart:</strong><br>";
  echo "<form action='update.php' name='form2' method='POST'>";
  foreach (($_SESSION['shopcart']) as $id => $antal)
  {  if ($antal > 0) {
       
        echo "<input type='text' size='2' name='antal' value='". $antal . "'> $id<br>";
          echo "<input type='hidden' size='2' name='id' value='" . $id . "'>";
  }}
    echo "<input value='update' type='submit' name='submit'>";
    echo "</form>";
} else {

echo "kurven er tom";
}

er der noget i vejen med mine variabler???
Avatar billede dennismp Nybegynder
15. april 2004 - 18:00 #4
if (isset($_SESSION['shopcart'])) {
  echo "<strong>Your cart:</strong><br>";
  echo "<form action='update.php' name='form2' method='POST'>";
  foreach (($_SESSION['shopcart']) as $id => $antal)
  {  if ($antal > 0) {
       
        echo "<input type='text' size='2' name='antal[$id]' value='". $antal . "'> $id<br>";
  }}
    echo "<input value='update' type='submit' name='submit'>";
    echo "</form>";
} else {

echo "kurven er tom";
}

update.php
<?php
session_start();

if( isset($_POST['antal']) && is_array($_POST['antal']) ) {
  foreach($_POST['antal'] as $id => $antal ) {
    $_SESSION['shopcart'][$id] = $antal;
  }
}
Avatar billede sebster Nybegynder
15. april 2004 - 18:04 #5
Jeg takker mange gange. Velfortjent for du dine point. Dejligt med hjælp når man brænder fast.
Avatar billede sebster Nybegynder
15. april 2004 - 18:05 #6
Smid lige et svar så får du dine point!
Avatar billede dennismp Nybegynder
15. april 2004 - 18:13 #7
Du må endelig sige til, hvis du vil have en forklaring :)
Avatar billede sebster Nybegynder
15. april 2004 - 18:17 #8
Jeg kan se du går ind og opretter et array i catalog.php, og i update.php sættes antallet til det som det skal. Har ikke benyttet mig af is_array før, og har heller ikke arbejdet så meget med sessions, men man lærer jo hele tiden.
Avatar billede dennismp Nybegynder
15. april 2004 - 18:20 #9
Just præcist. Godt at se at du får lært noget :)
Avatar billede sebster Nybegynder
15. april 2004 - 18:21 #10
Vil du ikke have dine point??? Så smid lige et svar!
Avatar billede dennismp Nybegynder
15. april 2004 - 18:24 #11
Du har givet mig points :) (Se min første kommentar/svar)
Avatar billede sebster Nybegynder
15. april 2004 - 18:26 #12
Oki, som sagt man lærer hele tiden!
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