Avatar billede gedekid Nybegynder
11. maj 2009 - 13:19 Der er 5 kommentarer

Problem med session data

Hej eksperter,

jeg har et problem jeg håber I kan hjælpe med mig...
Jeg har nogle session data som går tabt når jeg går et skridt tilbage...

På en side vælger man en tagvinkel hvad man enten kan vælge 25, 35 eller 45 grader, eller man kan skrive en præcis vinkel i ét af tre felter til hhv. 20-29, 30-39 eller +40 grader...

og på samme side vælger man en tagafslutning som enten kan være DV eller VS...

Min kode til det er dette stykke:

-----------------------------------
function udhaeng_valg() {
   
    print '<table border="0" cellspacing="10" cellpadding="0" width="650">';
        print "<tr>";
            print '<td colspan="3"><h4>Vælg vinkel</h4></td>';
        print "<tr>";           
            print '<td><p>20-29 &deg;</p><img src="gfx/oversigt/'. $_SESSION["husID"] .'_20'. $_SESSION["rooftype"] .'.gif" alt="" width="145" onclick="document.getElementById(\'fv25\').checked = true, document.getElementById(\'fv35\').checked = false, document.getElementById(\'fv45\').checked = false" style="cursor: hand;" /></td>';
            print '<td><p>30-39 &deg;</p><img src="gfx/oversigt/'. $_SESSION["husID"] .'_30'. $_SESSION["rooftype"] .'.gif" alt="" width="145" onclick="document.getElementById(\'fv35\').checked = true, document.getElementById(\'fv25\').checked = false, document.getElementById(\'fv45\').checked = false" style="cursor: hand;" /></td>';
            print '<td><p>40-60 &deg;</p><img src="gfx/oversigt/'. $_SESSION["husID"] .'_40'. $_SESSION["rooftype"] .'.gif" alt="" width="145" onclick="document.getElementById(\'fv45\').checked = true, document.getElementById(\'fv25\').checked = false, document.getElementById(\'fv35\').checked = false" style="cursor: hand;" /></td>';   
        print "</tr>";           
       
        if($_SESSION["husID"] == 4 || $_SESSION["husID"] == 5 || $_SESSION["husID"] == 6 || $_SESSION["husID"] == 16 || $_SESSION["husID"] == 17 || $_SESSION["husID"] == 18) {
           
            print "<tr>";   
                print '<td><input type="radio" name="fastvalg" id="fv25" value="angle25" /> 25&deg;<br />eller indtast præcise vinkler<br /><input type="text" value="" name="angle20" size="4" onfocus="document.getElementById(\'fv25\').checked = false" />&deg;<br /><input type="text" value="" name="angle20_2" size="4" onfocus="document.getElementById(\'fv25\').checked = false" />&deg;</td>';
                print '<td><input type="radio" name="fastvalg" id="fv35" value="angle35" /> 35&deg;<br />eller indtast præcise vinkler<br /><input type="text" value="" name="angle30" size="4" onfocus="document.getElementById(\'fv35\').checked = false" />&deg;<br /><input type="text" value="" name="angle30_2" size="4" onfocus="document.getElementById(\'fv35\').checked = false" />&deg;</td>';
                print '<td><input type="radio" name="fastvalg" id="fv45" value="angle45" /> 45&deg;<br />eller indtast præcise vinkler<br /><input type="text" value="" name="angle40" size="4" onfocus="document.getElementById(\'fv45\').checked = false" />&deg;<br /><input type="text" value="" name="angle40_2" size="4" onfocus="document.getElementById(\'fv45\').checked = false" />&deg;</td>';                       
            print "</tr>";
           
        } elseif($_SESSION["husID"] == 10 || $_SESSION["husID"] == 11 || $_SESSION["husID"] == 12 || $_SESSION["husID"] == 13 || $_SESSION["husID"] == 14 || $_SESSION["husID"] == 15 || $_SESSION["husID"] == 16) {
           
            print "<tr>";   
                print '<td><input type="radio" name="fastvalg" id="fv25" value="angle25" /> 25&deg;<br />eller indtast præcise vinkler<br /><input type="text" value="" name="angle20" size="4" onfocus="document.getElementById(\'fv25\').checked = false" />&deg;<br /><input type="text" value="" name="angle20_2" size="4" onfocus="document.getElementById(\'fv25\').checked = false" />&deg;<br /><input type="text" value="" name="angle20_3" size="4" onfocus="document.getElementById(\'fv25\').checked = false" />&deg;</td>';
                print '<td><input type="radio" name="fastvalg" id="fv35" value="angle35" /> 35&deg;<br />eller indtast præcise vinkler<br /><input type="text" value="" name="angle30" size="4" onfocus="document.getElementById(\'fv35\').checked = false" />&deg;<br /><input type="text" value="" name="angle30_2" size="4" onfocus="document.getElementById(\'fv35\').checked = false" />&deg;<br /><input type="text" value="" name="angle30_3" size="4" onfocus="document.getElementById(\'fv35\').checked = false" />&deg;</td>';
                print '<td><input type="radio" name="fastvalg" id="fv45" value="angle45" /> 45&deg;<br />eller indtast præcise vinkler<br /><input type="text" value="" name="angle40" size="4" onfocus="document.getElementById(\'fv45\').checked = false" />&deg;<br /><input type="text" value="" name="angle40_2" size="4" onfocus="document.getElementById(\'fv45\').checked = false" />&deg;<br /><input type="text" value="" name="angle40_3" size="4" onfocus="document.getElementById(\'fv45\').checked = false" />&deg;</td>';                       
            print "</tr>";
       
        } else {
            print "<tr>";   
                print '<td><input type="radio" name="fastvalg" id="fv25" value="angle25" /> 25&deg;<br />eller indtast præcis vinkel<br /><input type="text" value="" name="angle20" size="4" onfocus="document.getElementById(\'fv25\').checked = false" />&deg;</td>';
                print '<td><input type="radio" name="fastvalg" id="fv35" value="angle35" /> 35&deg;<br />eller indtast præcis vinkel<br /><input type="text" value="" name="angle30" size="4" onfocus="document.getElementById(\'fv35\').checked = false" />&deg;</td>';
                print '<td><input type="radio" name="fastvalg" id="fv45" value="angle45" /> 45&deg;<br />eller indtast præcis vinkel<br /><input type="text" value="" name="angle40" size="4" onfocus="document.getElementById(\'fv45\').checked = false" />&deg;</td>';                       
            print "</tr>";                                       
        }
           
    print "</table>";
}

print '<div style="float: left;">';
   
    print '<form action="index.php?pageID=5" method="post" name="angleform" /*onsubmit="return checkAngle();*/" >';
        if($_GET["tagtype"]) {
            $_SESSION["tagtype"] = $_GET["tagtype"];
        }   
        udhaeng_valg();
        $d = new Tagsten();
        $d->gavl_afslutning();
        print '<p><input type="submit" value="'. $nextstep .'" name="submit" class="nextStepInput" /></p>';
    print '</form>';
print '</div>';
                               
print '<div style="float: right;">';
    print '<table border="0" cellspacing="0" cellpadding="0">';
        print '<tr>';
            print '<td class="tdHeadline">Om tagvinkler</td>';
        print '</tr>';   
        print '<tr>';
            print '<td style="padding: 10px 0px 10px 0px;"><div style="float: left;"><img src="gfx/ikoner/vinkel45.jpg" width="150" height="112" alt=""  style="margin-right: 5px;" /></div><div style="float: right; width: 140px; margin-top: 25px;">45<sup>o</sup> tag</div></td>';
        print '</tr>';   
        print '<tr>';
            print '<td style="padding: 10px 0px 10px 0px;"><div style="float: left;"><img src="gfx/ikoner/vinkel35.jpg" width="150" height="91" alt=""  style="margin-right: 5px;" /></div><div style="float: right; width: 140px; margin-top: 25px;">35<sup>o</sup> tag</div></td>';
        print '</tr>';   
        print '<tr>';
            print '<td style="padding: 10px 0px 10px 0px;"><div style="float: left"><img src="gfx/ikoner/vinkel25.jpg" width="150" height="76" alt=""  style="margin-right: 5px;" /></div><div style="float: right; width: 140px; margin-top: 25px;">25<sup>o</sup> tag</div></td>';
        print '</tr>';   
        print '<tr>';
            print '<td style="padding: 10px 0px 10px 10px;">Du kan også beregne<br />tagvinklen sådan - <a href="#">Klik her</a></td>';
        print '</tr>';
        print '<tr>';
            print '<td>';
                $selected = new SelectRoof();
                $selected->showSelected();       
            print '</td>';
        print '</tr>';   
    print '</table>';       
print '</div>';

------------------------------
Når man så poster data til næste som som opsættes med:


---------------------------------


if(isset($_POST["angle20"]) || isset($_POST["angle30"]) || isset($_POST["angle40"]) || isset($_POST["fastvalg"])) {
    if(!empty($_POST["angle20"])) {
   
        $_SESSION["vinkel1"] = $_POST["angle20"];
        $_SESSION["vinkel2"] = $_POST["angle20_2"];
        $_SESSION["vinkel3"] = $_POST["angle20_3"];
       
        $_SESSION["tagtype"] = "25".$_SESSION["rooftype"];
       
    //30 UDEN UDHÆNG
    } elseif(!empty($_POST["angle30"])) {
                                                                           
        $_SESSION["vinkel1"] = $_POST["angle30"];
        $_SESSION["vinkel2"] = $_POST["angle30_2"];
        $_SESSION["vinkel3"] = $_POST["angle30_3"];
       
        $_SESSION["tagtype"] = "35".$_SESSION["rooftype"];
       
    //40 MED UDHÆNG
    } elseif(!empty($_POST["angle40"])) {
   
        $_SESSION["vinkel1"] = $_POST["angle40"];
        $_SESSION["vinkel2"] = $_POST["angle40_2"];   
        $_SESSION["vinkel3"] = $_POST["angle40_3"];   
   
        $_SESSION["tagtype"] = "45".$_SESSION["rooftype"];
           
    } else {
        $_SESSION["vinkel1"] = substr($_POST["fastvalg"], -2);
        $_SESSION["vinkel2"] = substr($_POST["fastvalg"], -2);
        $_SESSION["vinkel3"] = substr($_POST["fastvalg"], -2);
       
        $_SESSION["tagtype"] =  substr($_POST["fastvalg"], -2).$_SESSION["rooftype"];
    }
} else {

    $_SESSION["tagtype"] = $_SESSION["tagtype"];

    $_SESSION["vinkel1"] = $_SESSION["vinkel1"];
    $_SESSION["vinkel2"] = $_SESSION["vinkel2"];
    $_SESSION["vinkel3"] = $_SESSION["vinkel3"];
       
}

if($_POST["afslutning_sten"]) {
    $_SESSION["afslutning"] = $_POST["afslutning_sten"];
} else {
    $_SESSION["afslutning"] = $_SESSION["afslutning"];
}

---------------------------------------

så opsættes de forskellige sessions fint.... MEN går jeg tilbage til siden med valg af vinkel og tagafslutning så mister jeg den session der hedder "tagtype". Hvis ikke jeg vælger en vinkel....
Men sessionen er blevet oprettet én gang da jeg lavede valget første gang.
(Den bliver sat alt efter hvilken vinkel man har valgt, og valg af udhæng fra starten af siden).

hedder f.eks. 45mu (45 grader med udhæng)...

Efter man har foretaget sit valg første gang skal man have mulighed for at gå tilbage og vælge en anden tagafslutning... Har man f.eks. valg en VS skal man kunne vælge en DV... Men den skal så huske hvad man har valgt eller indtastet af hvilken...

Håber det er forståeligt....
Avatar billede cpfrande Nybegynder
13. maj 2009 - 09:47 #1
Hej,

Jeg er med på dit problem, men må erkende, at alt din kode her er meget uforståelig pga. du paster MEGET kode.

Kan du ikke lige det online som en .phps-fil, således vi kan se den på den måde?

Det vil kunne skabe en bedre kode-læsning for os.
Avatar billede gedekid Nybegynder
13. maj 2009 - 09:54 #2
Selvfølgelig :)

http://nemtagberegning.dk/tagtype.phps
http://nemtagberegning.dk/indtastmaal.phps

Jeg har fået problemet løst med det kode der ligger i de 2 filer, men om det er den mest optimale måde er jeg ikke sikker på, derfor har jeg ladet spørgsmålet stå åbent :)
Avatar billede cpfrande Nybegynder
13. maj 2009 - 10:40 #3
Tjoe, for mig ser det fint nok ud... det er små ting, der måske kan ændres. Men det er smagssager :-)
Avatar billede gedekid Nybegynder
13. maj 2009 - 10:43 #4
Super.. :) Hvad kunne ændres ?
Avatar billede gedekid Nybegynder
14. maj 2009 - 11:13 #5
Vil du ligge et svar så får du point for ulejligheden :)
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