webForumDet fria alternativet

PHP - SESSION

5 svar · 538 visningar · startad av webb

webbMedlem sedan juni 201025 inlägg
#1

Hej,

Jag har ett problem med SESSION för en enkel varukorg, summan ($_SESSION['sum']) ökar varje gången jag sänder formulären med nytt tal:

if(isset($_REQUEST['submitted'])) { // form är sänd
$summa = $_SESSION['pris_antal']; // Pris * antal
if (isset($_SESSION['sum'])) {
$_SESSION['sum'] = $_SESSION['sum'] + $summa;
echo $_SESSION['sum'];
}else {
$_SESSION['sum'] = $summa;
}

Men när jag nollställer $_SESSION['sum'] så blir $_SESSION['sum'] = $summa oavsett hur många gånger jag sänder formulären:

if(isset($_REQUEST["rensa"])) {
unset($_SESSION["sum"]);
}

Är det någon SESSION-expert som kan hjälpa till?

Tack i för hand!
Webb

GunnarDMedlem sedan juni 20014 290 inlägg
#2

Inte så konstigt eftersom du i koden säger att om inte "sum" finns (isset()) så sätt den lika med $summa.

webbMedlem sedan juni 201025 inlägg
#3

Tack för svaret,

För första gången om inte "sum" finns (isset())så sätt den lika med $summa som har ett initierat tal. Sedan när jag skickar formulären för andra gången så är "sum" lika med $summa, då bör satsen if (isset($_SESSION['sum'])) gälla!

Mvh
Webb

GunnarDMedlem sedan juni 20014 290 inlägg
#4

Japp, och där lägger du på $summa igen.

Så sum kommer alltid att vara minst lika med $summa.

Logiken i din kod ser ut så här:

om sum finns
  sum=sum+$summa
annars
  sum=$summa

Denna kod kan du i princip ersätta med:

sum=sum+$summa

Vilket ger samma resultat i detta fallet, förutsatt att du inte har annat i din if sats..

fiddlerMedlem sedan juli 20023 617 inlägg
#5

Var sätter du $_SESSION['pris_antal'] någonstans? Har den något värde?

webbMedlem sedan juni 201025 inlägg
#6

Jag ersatte koden med sum=sum+$summa, men det är samma problem när jag nollställer $_SESSION['sum'] så blir $_SESSION['sum'] = $summa. Problem uppstår när jag nollställer $_SESSION['sum'].
if(isset($_REQUEST["rensa"])) {
unset($_SESSION["sum"]);
}
$_SESSION['pris_antal'] kommer från:
$_SESSION['pris_antal'] = $_REQUEST['storlek_pris'];
<script type="text/javascript">
function calcprice(){
var size = document.getElementById('storlek').value;
var antal = document.getElementById('antal').value;
document.storlek_pris.pris.value = size * antal;
}
</script>
<form id="storlek_pris" name="storlek_pris" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">

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