Probleme mit dem Style-Switcher
Phil
- php
Hi Leute.
Ich habe mal versucht einen Styleswitcher in meien Page einzubauen.
Es klappt auch ganz gut. Bis auf eine Sache die mich stört.
Sagen wir mal ich habe z.Z. Style1 aktiv und will dann auf Style2 wechseln. Dann wähle ich Style2 und klicke auf "Style wählen". DAnn läd er die Seite neu und nichts hat sich verändert! Erst wenn ich _dann_ zum _zweiten_ mal Style2 auswähle und er dann die Seite neuläd, hat er den Style gewechselt. Woran liegt es, das ich jeden Style 2 mal auswählen muss damit es funktioniert?
Der Link:
http://philz.ph.ohost.de/index/index.php
QUelltext:
--------------------------------------------------------------
<?
if(isset($_POST['auswahl'])) {
setcookie("stylekeks", $_POST['auswahl'], time()+3600, "/");
$style = $_COOKIE['stylekeks'];
}
elseif(!isset($_POST['auswahl'])) {
if(isset($_COOKIE['stylekeks'])) {
$style = $_COOKIE['stylekeks'];
}
else {
$style = '1';
}
}
?>
<html>
<head>
<title>Plalala</title>
<link rel="stylesheet" type="text/css" href="../css/style<?=$style?>.css">
<link rel="stylesheet" type="text/css" href="../css/styleie.css">
</head>
<body>
<div id="linksb">
<img src="../img/kopf<?=$style?>.jpg" alt="Phil Z." id="imgh">
<div id="float2">
<form method="post" action="index.php" name="formularstyle">
<p><select name="auswahl" size="1" id="stylewahl">
<option value="1" <?=$sel1?>>Style1</option>
<option value="2" <?=$sel2?>>Style2</option>
<option value="3" <?=$sel2?>>Style3</option>
</select></p>
<p><input type="submit" name="stylewahl" value="Style wählen"></p>
</form>
</div>
</div>
</body>
</html>
--------------------------------------------------------------
Ich hoffe ihr könnt mir helfen.
mfg
Phil
Hallo,
$style = $_COOKIE['stylekeks'];
Du sendest einen Keks und erwartest, daß $style sich direkt an den Keksinhalt anpaßt?
Erst beim nächsten Aufruf wird der Keks doch wieder ausgelesen. Daher die Notwendigkeit 2mal zu Laden, wenn ich mich nicht irre [kann aber durchaus sein daß bei diesen Temperaturen meine Großhirnrinde schon Blasen wirft].
Wenn Du im Keks $_POST['auswahl'] speicherst, warum übergibst Du den Wert $_POST['auswahl'] nicht auch direkt an $style?
Dann müßte es eigentlich funktionieren.
netten Tag
^da Powl
Danke hat geklappt! =)
Hier für alle andern die später mal im Archiv nachschauen können.
Das komplette Script mit Erklärung.
----------------------------
index.php
---------------------------
<?
if(isset($_POST['auswahl'])) {
setcookie("stylekeks", $_POST['auswahl'], time()+3600, "/");
$style = $_COOKIE['stylekeks'];
$style = $_POST['auswahl'];
}
lseif(!isset($_POST['auswahl'])) {
if(isset($_COOKIE['stylekeks'])) {
$style = $_COOKIE['stylekeks'];
}
else {
$style = '1';
}
}
?>
<html>
<head>
<title>Styleswitcher</title>
<link rel="stylesheet" type="text/css" href="style<?=$style?>.css">
</head>
<body>
<img src="kopf<?=$style?>.jpg" alt="header">
<form method="post" action="index.php" name="formularstyle">
<p><select name="auswahl" size="1">
<option value="1">Style1</option>
<option value="2">Style2</option>
<option value="3">Style3</option>
</select></p>
<p><input type="submit" name="stylewahl" value="Style wählen"></p>
</form>
</body>
</html>
Man hat 3 verschiedene Styles.
style1.css
style2.css
style3.css
Jeder Style hat ein eigenen Header.
kopf1.css
kopf2.css
kopf3.css
Durch das Formular wird der Style ausgewählt.
Bei Style1 wird der Wert 1 übertragen.
Bei Style2 wird der Wert 2 übertragen.
Bei Style3 wird der Wert 3 übertragen.
Anschließend wird der Wert in einem Cookie gespeichert und ausserdem an die Variable $style gegeben, so das der Besucher beim nächsten Besuch den Style den er letztes mal ausgewählt hat aktiviert hat.
Oben werden die CSS Datei und der Header eingebunden.
<link rel="stylesheet" type="text/css" href="style<?=$style?>.css">
<img src="kopf<?=$style?>.jpg" alt="header">
Wie man sieht steht dort href="style<?=$style?>.css"
da $style entweder den Wert 1, 2 oder 3 hat, Wird die passende Style Datei geladen und der dazu passende Header.
Falls man das erste mal auf die Page kommt, ist als Default Wert "1" angegeben. So hat jeder Bescucher der zum ersten die Page betritt, kein Cookie mehr hat von deiner Page oder das Formular nicht benutzt hat den Style1. Dieser lässt sich natürlich auch ändern indem man oben bei
elseif(!isset($_POST['auswahl'])) {
if(isset($_COOKIE['stylekeks'])) {
$style = $_COOKIE['stylekeks'];
}
else {
$style = '1';
}
}
den Wert von $style, von 1 auf 2 oder 3 ändert.
Man kann nartürlich beliebig viele Styles hinzufügen, indem man
ein weiteren Header, eine weitere CSS Datei anlegt (styleX.css)und dem Formular eine weiere Zeile hinzufügt.
<option value="X">StyleX</option>
Ich hoffe ich habe alles richtig erklärt und kann damit anderen später helfen. =)
mfg
Phil
Hallo,
...
if(isset($_POST['auswahl'])) {
setcookie("stylekeks", $_POST['auswahl'], time()+3600, "/");
$style = $_COOKIE['stylekeks']; //hajo, was ist denn
$style = $_POST['auswahl']; //jetzt des?
} //$style:"erst bin ich eins und später zwei, ich sehne Klarheit mir herbei"
...
lseif(!isset($_POST['auswahl'])) { //und di[e]s funktioniert bei Dir?
//außerdem steht oben schon if(isset($_POST['auswahl'])) {
//was verbleibt dann als logisches else?
//mag zwar funktionieren, aber schön ist das nicht ;)
...
netten Tag
^da Powl
Hi
Das geht noch n bisschen einfacher. Außerdem hab ich das xml-konforme <?php-Starttag genommen. Jez is auch der aktuelle Style selected:
___PHP0___
<html>
<head>
<title>Styleswitcher</title>
<link rel="stylesheet" type="text/css" href="style___PHP1___.css">
</head>
<body>
<img src="kopf___PHP2___.jpg" alt="header">
<form method="post" action="index.php" name="formularstyle">
<p><select name="auswahl" size="1">
<?php
for($i=1;$i<=3;$i++):
if($i==$style)
echo "<option value='$i' selected>Style $i </option>';
else
echo "<option value='$i'>Style $i </option>';
endfor;
?>
</select></p>
<p><input type="submit" name="stylewahl" value="Style wählen"></p>
</form>
</body>
</html>
mfg
Genie
Super.
Danke!
mfg
Phil
Hi
Nix zu danken
mfg
Genie
Hallo,
gönne ihm doch ruhig mal was mehr Zeit zum Nachdenken und Ausprobieren. Jede Wette da wäre er auch selbst drauf gekommen. Da war er doch schon dicht genug dran.
netten Tag
^da Powl
Hi
Ich wollte ihm nur die Arbeit ersparen
mfg
Genie
Hi.
Jetzt bräuchte ich mal euren Rat.
Wo könnt eich ihn dezent plazieren?
Neben dem header würd ich sehr ungern und in der Navi auch nicht wirklich gerne obwohl ich da noch mal überlegen will. Ansosnten unten im Footer. Vllt. auch in der rechten Seite vom Content Bereich.
Ich bin mir einfach nicht sicher da es einfach ne Spielerei ist.
mfg
Phil
Hi.
So ich habe ihn mal in der Navi-Leiste plaziert und an den jeweiligen Style angepasst, zudem auch noch mit den Brwosern Opera9, FF1.5.0.4 und IE6 getestet.
Bei klappt alles wunderbar und ich hoffe das dass Design nun okay ist.
Eure letzte Meinung abschließend hätte ich dennoch gerne nochmal.
Danke an alle und besonders an Powl, D.R, Genie, Wilhelm Turtschan und Gunnar Bittersmann die mich sehr stark darin unterstützt haben meine Fehler zu finden und zu beheben und mir gezeigt haben wo ich noch einige Defiziete habe im Bereich HTML & CSS.
Danke.
mfg
Phil