Phil: Probleme mit dem Style-Switcher

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&auml;hlen"></p>
 </form>
    </div>
</div>
</body>
</html>

--------------------------------------------------------------
Ich hoffe ihr könnt mir helfen.

mfg

Phil

  1. 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

    --
    ===============================
    powl.hat-gar-keine-homepage.de/
    1. 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&auml;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

      1. 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

        --
        ===============================
        powl.hat-gar-keine-homepage.de/
      2. 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&auml;hlen"></p>  
        </form>  
        </body>  
        </html>  
        
        

        mfg
        Genie

        1. Super.

          Danke!

          mfg

          Phil

        2. 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

          --
          ===============================
          powl.hat-gar-keine-homepage.de/
  2. 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

    1. 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