19. december 2006 - 22:32Der 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 ? :)
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>"; }
//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> }
Synes godt om
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
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 :)
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
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
Synes godt om
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>"; } } ?>
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
Synes godt om
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.
Synes godt om
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)
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 :)
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
Synes godt om
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.
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 ?
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.
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.