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.