Hei,
Joka kerta sivua uudelleen ladattaessa $_SESSION["k"] muuttujan arvo kasvaa yhdellä, vaikka sen ei pitäisi tehdä niin. Missään kohti tätä sivua en muuta kyseisen muuttujan arvoa, ja ainoat kohdat joissa se on edes mainittu ovat tässä:
if($_SESSION["k"]){ $maara = $_SESSION["k"]; } else{ $maara = 0; }
Mikä neuvoksi?
Pistä koodi näkyville. Uskon että sieltä se muutoksen tekevä rivi löytyy melko nopeasti...
No tässä sitten kaikki kyseisellä sivulla oleva php-koodi, html-koodin jätän pois:
<?php session_start(); unset($maara); echo $_SESSION["k"]; if($_SESSION["kirjautunut"] != 1){ header("Location: lisaa_1.php"); } if($_SESSION["k"]){ $maara = $_SESSION["k"]; } else{ $maara = 0; } ?>
...
var k = <?php echo $maara; ?>;
...
var _nimi = new Array(); <?php for($k = 1; $k <= $maara; $k++){ if($_SESSION["_nimi"][$k]){ echo " _nimi[" . $k . "] = \"" . $_SESSION["_nimi"][$k] . "\";\n"; } } ?> var _tyyppi = new Array(); <?php for($k = 1; $k <= $maara; $k++){ if($_SESSION["_tyyppi"][$k]){ echo " _tyyppi[" . $k . "] = " . $_SESSION["_tyyppi"][$k] . ";\n"; } } ?> var _pakollinen = new Array(); <?php for($k = 1; $k <= $maara; $k++){ if($_SESSION["_pakollinen"][$k]){ echo " _pakollinen[" . $k . "] = " . $_SESSION["_pakollinen"][$k] . ";\n"; } } ?> var _arvot = new Array(); <?php for($k = 1; $k <= $maara; $k++){ if($_SESSION["_arvot_maara"][$k]){ echo " _arvot[" . $k . "] = new Array();\n"; for($a = 1; $a <= $_SESSION["_arvot_maara"][$k]; $a++){ if($_SESSION["_arvot"][$k][$a]){ echo " _arvot[" . $k . "][" . $a . "] = \"" . $_SESSION["_arvot"][$k][$a] . "\";\n"; } } } } ?> var _arvot_maara = new Array(); <?php for($k = 1; $k <= $maara; $k++){ if($_SESSION["_arvot_maara"][$k]){ echo " _arvot_maara[" . $k . "] = " . $_SESSION["_arvot_maara"][$k] . ";\n"; } } ?> var _riveja = new Array(); <?php for($k = 1; $k <= $maara; $k++){ if($_SESSION["_riveja"][$k]){ echo " _riveja[" . $k . "] = " . $_SESSION["_riveja"][$k] . ";\n"; } } ?> var _lisatietoja = new Array(); <?php for($k = 1; $k <= $maara; $k++){ if($_SESSION["_lisatietoja"][$k]){ echo " _lisatietoja[" . $k . "] = \"" . $_SESSION["_lisatietoja"][$k] . "\";\n"; } } ?>
...
<?php echo $_SESSION["nimi"]; ?>
Hmm, muutenkin näyttää datamapilla sessiot toimivan melko odottamattomasti, tai sitten en vain osaa:) Ei kait sessioiden arvojen pitäisi muuttua ilman, että niitä asetetaan uudelleen?
En oo varma, mutta
for($k = 1; $k <= $maara; $k++)
tuossahan se lisää k-muuttujan arvo kasvaa aina yhdellä tuon $k++ :n takia. Oon melko väsynyt enkä lukenut koodia kunnolla, joten saatan olla väärässäkin. ^^
Jep, kun kerran $k määräytyy $maaran mukaan, ja kun looppi kestää siihen asti että $k on suurempi kuin $maara niin sitten se tosiaan kasvaa aina yhdellä.
Tämän ongelman voisi välttää käyttämällä esimerkiksi nollapohjaisia muuttujataulukoita (nähdäkseni tässä on käytössä yksipohjaiset, mutta väsyneenä ei jaksa syväanalysoida).
Tosiaan, mutta ei kait $k:n kasvamisen pitäisi vaikuttaa $_SESSION["k"] kasvamiseen? Tuo kuitenkin korjasi ongelman, joten kiitoksia:)
Olisiko datamapissa register_globals päällä? Silloinhan $_SESSION['k'] ja $k ovat sama asia...
Aihe on jo aika vanha, joten et voi enää vastata siihen.