Avatar billede djicep Nybegynder
19. december 2006 - 22:32 Der er 43 kommentarer og
1 løsning

Reloade Sessions

Hejsa Eksperter.
Jeg har en side hvor man kan ændre layout på selve siden.
Det har jeg lavet via en session ?
Så vil jeg lige hører om man kan reloade sessions uden at skulle logge ud og ind ad siden igen ? og eventuelt hvordan ? :)

På forhånd tak :D
Avatar billede djicep Nybegynder
19. december 2006 - 23:05 #1
Altså den hedder session[layout] kan man bare reloade den eller ? For det ville da være nemmere end at skulle logge ud og ind når det er :)
Avatar billede Slettet bruger
19. december 2006 - 23:10 #2
Du skal bare ændre værdien sådan her (f.eks.)
// f.eks. update i en database ect.
$_SESSION['layout'] = "design1";
Avatar billede djicep Nybegynder
19. december 2006 - 23:12 #3
<?

$id = mysql_escape_string($_GET["id"]);
$userId = $_SESSION["userId"];
if ($_GET[id] > 9)
    echo "<br /><b><font color=\"red\" size=\"4\">Fejl!! Layout id findes ikke.</font></b>";

else if($_GET[id])
    {
mysql_query("UPDATE brugere SET layout='$id' WHERE userId='$userId'")or die(mysql_error());
    $id = isset($_GET[id])?$_GET[id]:"";
        if( $id == "1" )
            $id = "Grøn";
        if( $id == "2" )
                    $id = "Blå";

              if( $id == "3" )
                    $id = "Gul";
       
        if( $id == "4" )
                    $id = "Rød";
   
        if( $id == "5" )
                    $id = "Orange";
       
        if( $id == "6" )
                    $id = "Baby blå";

        if( $id == "7" )
                    $id = "Brun";
   
        if( $id == "8" )
                    $id = "Grå";

        if( $id == "9" )
                    $id = "Sort";

    echo "<br /><b><font color=\"green\" size=\"4\">Farven er nu ændret til $id</font></b>";
       
    }
else if(isset($_GET["reset"]) && $_GET["reset"] != '0')
    {
mysql_query("UPDATE brugere SET layout=0 WHERE userId='$userId'")or die(mysql_error());
    echo "<br /><b><font color=\"green\" size=\"4\">Farven er nu ændret til standard</font></b>";
    }
?>

Så vil jeg så gerne ha den til at opdatere session[layout] uden at man skal logge ind ?
Avatar billede djicep Nybegynder
19. december 2006 - 23:12 #4
Hmm Coldgate. Forstår jeg ikke lige :S
Avatar billede Slettet bruger
19. december 2006 - 23:41 #5
Du kan i hvert fald i stedet for at havde alle de if $id == 8 osv...
lave en switch - din if($id == "9") skal være uden "" da 9 er et tal.

Vi laver lige en switch

switch($id) {
  case 1: $id = "Grøn";
    break;
  case 2: $id = "Blå";
    break;
  case 3: $id = "Gul";
    break;
  case 4: $id = "Rød";
    break;
  case 5: $id = "Orange";
    break;
  case 6: $id = "Baby blå";
    break;
  case 7: $id = "Brun";
    break;
  case 8: $id = "Grå";
    break;
  case 9: $id = "Sort";
    break;
  default: $id = "Grøn";
    break;
}

Det var den ene løsning lige at lave det pænere og mere overskueligt på.
Dine if'er tjekker på alle sammen, hvor switch'en stopper når den har fundet et resultat. (for at spare tid)

Men jeg ville nok hele laver et array med dine farver, nu hvor du kun skal bruge en ting, pr. id. (Hvis du nu skulle ændre 2+ variabler så ville jeg bruge switchen)
$colors = array("Grøn", "Blå", "Gul", "Rød", "Orange", "Baby Blå", "Brun", "Grå", "Sort");
echo $colors[($id-1)]; (Et array starter på 0, men vi kan bare minus vores $id med 1, så får vi det samme.

if(mysql_query("UPDATE brugere SET layout='$id' WHERE userId='$userId'")) {
  echo "<br /><b><font color=\"green\" size=\"4\">Farven er nu ændret til $id</font></b>";
}
Avatar billede djicep Nybegynder
19. december 2006 - 23:45 #6
Ja okay. Forstår jeg udemærket.

Men kan man under echoet ikke lave en ting som reloadeder session[layout]? :)
Avatar billede Slettet bruger
20. december 2006 - 01:06 #7
Jow.

$colors = array("Grøn", "Blå", "Gul", "Rød", "Orange", "Baby Blå", "Brun", "Grå", "Sort");

//Her laver vi først lige et tjek på om updateringen i database går igennem, så vi ikke giver brugeren forkert info
if(mysql_query("UPDATE brugere SET layout='$id' WHERE userId='$userId'")) {
  $_SESSION['layout'] = $colors[($id-1)]; // ved ikke om du vil have selve id'et eller om du vil have farven. Hvis det skal være tallet (id'et) så skriv $id i stedet for $colors[($id-1)];

  echo "<br /><b><font color=\"green\" size=\"4\">Farven er nu ændret til $id</font></b>";
} else {
  echo "<br /><b><font color=\"green\" size=\"4\">Der skete en fejl.</font></b>
}
Avatar billede Slettet bruger
20. december 2006 - 01:14 #8
Når ja i switch'en er der i dette tilfælde sat en default, den bliver udført hvis der ikke er nogen andre der stemmer over ens, men default behøves ikke i switchen hvis man ikke ønsker det.
Man kan også udfører flere ting ved hvert 'step' hvor i det tilfælde jeg skrev ændre den kun $id til en anden værdi.
Kig mere her: http://dk2.php.net/switch
Avatar billede djicep Nybegynder
20. december 2006 - 10:10 #9
Oki nu har jeg prøvet at sætte $_SESSION['layout'] = $id; ind men det ændre ingenting. Altså JEG skal logge ud og ind igen før den opdatere session. Men ellers er det ligemeget hvis det ikke kan lade sig gøre. så må folk bare logge ud og ind hvis de vil skifte farve på siden :)
Avatar billede jens12 Nybegynder
20. december 2006 - 13:57 #10
Djicep : Kan man kun ændre layoutet til siden når man er logget ind ? .. For så har jeg evt en løsning =)..Hvis det lød som noget ?
Avatar billede Slettet bruger
20. december 2006 - 14:03 #11
Du skal bare sætte $_SESSION['layout'] = $id; i toppen (altså så tidligt som muligt, og self før du hiver den ud, så virker den nemlig.
Avatar billede djicep Nybegynder
20. december 2006 - 15:05 #12
Jens12: Ja man kan kun ændre layout når man er logget ind :)

coldgate: okay prøver jeg lige :D
Avatar billede jens12 Nybegynder
20. december 2006 - 15:33 #13
djicep : Okay,hvis du ikke får det til at virke..så skriv lige og hvis du er interesseret =)
Avatar billede djicep Nybegynder
20. december 2006 - 22:14 #14
Oki :)
Avatar billede djicep Nybegynder
20. december 2006 - 22:25 #15
coldgate. Ja den virker da. men bare ikke helt efter hensigten. Det der er problemet er at den ikke ændre farven tilbage hvis jeg vælger standard igen. Der forbliver den bare ved id 1. Men inde i db er den ændre til 0 igen ? :S
Avatar billede djicep Nybegynder
20. december 2006 - 22:27 #16
og man skal trykke 2 gange på den før den ændre sig til id 1 men selvom man tryker 2 gange på standard så ændre den ikke tilbage igen :S
Avatar billede Slettet bruger
20. december 2006 - 22:53 #17
Det kan være du lige skal poste lidt mere af koden, så jeg lige kan se hvordan du gør det.
Avatar billede djicep Nybegynder
20. december 2006 - 22:55 #18
Oki men har ikke ændret det til Switch endnu :) Bare lige så du ved det :D

<?

$id = mysql_escape_string($_GET["id"]);
$userId = $_SESSION["userId"];
if ($_GET[id] > 9)
    echo "<br /><b><font color=\"red\" size=\"4\">Fejl!! Layout id findes ikke.</font></b>";

else if($_GET[id])
    {
$_SESSION['layout'] = $id;
mysql_query("UPDATE brugere SET layout='$id' WHERE userId='$userId'")or die(mysql_error());
    $id = isset($_GET[id])?$_GET[id]:"";
        if( $id == "1" )
            $id = "Grøn";

        if( $id == "2" )
                    $id = "Blå";

              if( $id == "3" )
                    $id = "Gul";
       
        if( $id == "4" )
                    $id = "Rød";
   
        if( $id == "5" )
                    $id = "Orange";
       
        if( $id == "6" )
                    $id = "Baby blå";

        if( $id == "7" )
                    $id = "Brun";
   
        if( $id == "8" )
                    $id = "Grå";

        if( $id == "9" )
                    $id = "Sort";

   
    echo "<br /><b><font color=\"green\" size=\"4\">Farven er nu ændret til $id</font></b>";
    }
else if(isset($_GET["reset"]) && $_GET["reset"] != '0')
    {
mysql_query("UPDATE brugere SET layout=0 WHERE userId='$userId'")or die(mysql_error());
    echo "<br /><b><font color=\"green\" size=\"4\">Farven er nu ændret til standard</font></b>";
    }
?>

har sat det ind der hvor jeg ville mene det skulle sidde ? :S
Avatar billede Slettet bruger
20. december 2006 - 23:30 #19
Når okay, men brug array'et jeg har lavet.

<?PHP
$id = mysql_escape_string($_GET["id"]);
$userId = $_SESSION["userId"];
$colors = array("Grøn", "Blå", "Gul", "Rød", "Orange", "Baby Blå", "Brun", "Grå", "Sort");
if(!is_numeric($id)) { // tjekker om id er et tal
    echo "<br /><span style=\"color: green; font-size: 12px; font-weigth: bold;\">IDet skal være et tal!</span>";
} elseif($id > count($colors)) { // tjekker om id er over antallet af farver i $colors
    echo "<br /><span style=\"color: green; font-size: 12px; font-weigth: bold;\">IDet skal være et tal!</span>";
} else {
    $query = @mysql_query("UPDATE brugere SET layout='".$id."' WHERE userId = '".$userId."'");
    if($query) {
        $_SESSION['layout'] = $id;
        echo "<br /><span style=\"color: green; font-size: 12px; font-weigth: bold;\">Layoutet har nu skiftet farve</span>";
    } else {
        echo "<br /><span style=\"color: green; font-size: 12px; font-weigth: bold;\">Der skete en fejl</span>";
    }
}
?>
Avatar billede djicep Nybegynder
20. december 2006 - 23:35 #20
oki prøver. :S
Avatar billede Slettet bruger
20. december 2006 - 23:36 #21
superb.
Men et eller andet sted har du jo, et sted hvor den hiver din infomation ud fra hver enkelt bruger.
Avatar billede djicep Nybegynder
20. december 2006 - 23:38 #22
Forresten hvad med min reset function ? Kan jeg stadig bruge den eller ?
Avatar billede djicep Nybegynder
20. december 2006 - 23:39 #23
Ja det har jeg når jeg starter siden :) Der går den jo ind og starter sessions og så tjekker den session layout også ? Men der var det jeg troede man bare kunne gå ind og sætte en function på det jeg allerede havde kodet som bare gik ind og reloadede den enkelte session så folk var fri for at logge ud og ind :) Det ville jo være nemmere end at skulle lave hele koden om :D
Avatar billede Slettet bruger
20. december 2006 - 23:40 #24
Nej den har jeg jo egentlig fået fjernet :D
Men $id indeholder jo forresten kun idet og ikke farven.
Avatar billede Slettet bruger
20. december 2006 - 23:41 #25
Ja men det er fordi du skal have denne stump-kode før 'login' delen.
Sådan så den kan ændre det før den hiver det ud.
du hiver det ud, bruger det, og ændre den (men den bruger du ikke)
Avatar billede djicep Nybegynder
20. december 2006 - 23:41 #26
Nej det ved jeg godt det er fordi alt efter hvilket id du har går den ind og finder en css fil der hører til id = 1 og id = 2 :)
Avatar billede Slettet bruger
20. december 2006 - 23:42 #27
Så er det jo lige meget med enten en switch/array der indeholder farverne, når du ikke bruger dem.
Avatar billede djicep Nybegynder
20. december 2006 - 23:42 #28
Nej på min side logger du først ind, så går du til ændre layout siden og der ændre du så layout id og udfra det går den ind og finder den css fil som hører til de forskellige ids :)
Avatar billede djicep Nybegynder
20. december 2006 - 23:43 #29
Ja det er jo fordi jeg vil ha den til at skrive hvad du har ændret farve til :D Det var ikke en function der skulle bruges til andet :D
Avatar billede djicep Nybegynder
20. december 2006 - 23:45 #30
altså if sætningerne fra min egen kode. :)
Avatar billede Slettet bruger
20. december 2006 - 23:46 #31
Nå okay,
så skal
echo "<br /><span style=\"color: green; font-size: 12px; font-weigth: bold;\">Layoutet har nu skiftet farve</span>";

->

echo "<br /><span style=\"color: green; font-size: 12px; font-weigth: bold;\">Layoutet har nu skiftet farve ".$colors[($id-1)]."</span>";
Avatar billede djicep Nybegynder
20. december 2006 - 23:48 #32
aha :) Der kan man bare se :D

Nå det må jeg prøve at se om jeg kan få til at virke imorgen :) Vil hoppe i kanen :D
Avatar billede djicep Nybegynder
21. december 2006 - 02:29 #33
Coldgate:

Nu har jeg sat det ind, meeeen det virker på samme måde. Jeg skal trykke 2 gange for at den ændre farven plus at nu geder den bare totalt i hvilket echo den giver :P Men det kan jeg da selv fixe, Men lige det andet ved jeg ikke lige hvordan jeg klare. :S
Avatar billede Slettet bruger
21. december 2006 - 04:02 #34
Ja men det er netop som jeg siger, at du hiver værdien ud, og bruger den før du ændre den. Det får den først med 2. gang.
Avatar billede djicep Nybegynder
21. december 2006 - 12:28 #35
Hmm ja okay, :S
Avatar billede djicep Nybegynder
21. december 2006 - 12:33 #36
Er det fordi det er en SESSION jeg har lavet at den gør eller er det det jeg har lavet i head.php hvor jeg får den til at skifte imellem css filerne alt efter hvilket nr de har ?
Avatar billede djicep Nybegynder
21. december 2006 - 12:37 #37
Dette er det jeg har i head.php

eksempel:

if($_SESSION[layout] == "1")
{ ?>
        <link rel="stylesheet" href="style/style1.css">
<? }
else if($_SESSION[layout] == "2")
{ ?>
    <link rel="stylesheet" href="style/style2.css">
<? }
Avatar billede Slettet bruger
21. december 2006 - 15:19 #38
Du kan jo bare:
<link rel="stylesheet" href="style/style<?PHP echo $_SESSION['layout']; ?>.css">
Så behøves du ikke alle dine if'er igen :P

Ilustration af kode opsætningen.
Kode kode kode
kode kode kode
mere kode kode kode
du logger ind
henter layout
kode kode kode
... ... ...
... ... ...
her er din kode til at ændre layout - så er det klart den ikke fanger det da den læser det oppe fra og ned.

alt muligt andet kode herunder
Avatar billede djicep Nybegynder
21. december 2006 - 16:00 #39
Ja okay :) Det er lidt skidt. Nå vi dropper det bare :D
Send et svar så får du pointene alligevel for dit besvær :D
Avatar billede djicep Nybegynder
21. december 2006 - 16:11 #40
Det skal også lige siges at jeg er ret ny til php så hvis du synes mine koder roder helt vild er det nok derfor :(
Avatar billede djicep Nybegynder
22. december 2006 - 23:54 #41
coldgate skal du ikke ha dine points ? :)
Avatar billede Slettet bruger
23. december 2006 - 00:35 #42
svar, håber det var en hjælp.
Avatar billede djicep Nybegynder
23. december 2006 - 02:32 #43
tiværdifalde og glædelig jul til dig også :D
Avatar billede Slettet bruger
23. december 2006 - 20:28 #44
Jo tak og i lige måde.
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

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging