Simon: Was ist hierdran falsch?

<?php
session_start();
if ($_SESSION["schalter"] == "an")
{     echo implode("", file("hell.css"));}

elseif ($_SESSION["schalter"] == "aus")
{     echo implode("", file("dunkel.css"));}

elseif ($_SESSION["schalter"] == "golden")
{     echo implode("", file("golden.css"));}
?>

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

Gibts da generelle fehler??? Es will nämlich nicht funktionieren.

Danke

  1. Huhu Simon

    Es will nämlich nicht funktionieren.

    Das ist aber ziemlich gemein von dem "es".

    Falls Du, wie ich vermute eine externe CSS-Datei einbinden möchtest, so fehlen dann bei obigem Verfahren die entsprechenden Tags, da Du den Inhalt der Datei ja direkt in die Ausgabe "kloppst".

    Ansonsten lies nochmal nach wie man externe CSS-Dateien richtig einbindet.

    http://selfhtml.teamone.de/css/formate/einbinden.htm#separat

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Nein, das mim Einbinden ist schon ok. Es hat ja schonmal funktioniert. Vorher hatte ich es so:

      <?php
      session_start();

      if ($_SESSION["schalter"] == "an")
           echo implode("", file("hell.css"));
      else
           echo implode("", file("dunkel.css"));
      ?>

      Das hat funktioniert. Will jetzt aber auch noch ein drittes einbauen. Aber wie geht das???

      1. Huhu Simon

        Das hat funktioniert. Will jetzt aber auch noch ein drittes einbauen. Aber wie geht das???

        also ich persönlich mag keine langen elseif-Konstruktionen.
        (Obwohl ich in Deinem Beispiel keinen Fehler gefunden habe.[1])

        IMHO besser ist switch, oder ein Array als Zuordnungs-Tabelle

        Also z.B.

        switch ($_SESSION["schalter"])
        {
         case 'an':
             echo implode("", file("hell.css"));
         break;

        case 'aus':
            echo implode("", file("dunkel.css"));
         break;

        default:
            echo implode("", file("default.css"));
        }

        oder

        $css_map = array(
        'an' => 'hell.css',
        'aus' => 'dunkel.css',
        'golden' => 'gold.css',
        );

        $s = $_SESSION["schalter"];

        if (isset ($css_map[$s])) {
            echo implode("", file ($css_map[$s]) );
        } else {
            echo implode("", file ("default.css"));
        }

        ?>

        evtl. liegt es auch an der CSS-Datei (Zugriffsrechte, Fehler etc.).
        Probier mal diese direkt einzufügen.

        Ansonsten fände ich es sinnvoller per HTML eine externe Datei zu referenzieren, als den CSS-Code per PHP direkt einzufügen.

        Viele Grüße

        lulu

        --
        bythewaythewebsuxgoofflineandenjoytheday
        [1] das bedeutet natürlich nicht, dass keiner drin ist :-)
        1. Hallo lulu,

          Danke für die Hilfe,

          Ich habe dann auch noch ein popup.php Fenster, dass einer dieser Styles wählen soll. Dieses sieht bis jetzt so aus:

          <?php
          session_start();
          session_register("schalter");

          if ($GET["licht"]=="an")  {
            $schalter="an";}

          elseif ($GET["licht"]=="aus")  {
            $schalter="aus";}

          elseif ($GET["licht"]=="golden") {
            $schalter="golden";}

          ?>

          Wie passe ich es auf deine Vorschläge an?

          Vielen Dank,
          Simon

          1. Huhu Simon

            Wie passe ich es auf deine Vorschläge an?

            Da bin ich optimistisch, dass Du das schon schaffen wirst ;-)

            und beachte:

            $GET != $_GET

            Viele Grüße

            lulu

            --
            bythewaythewebsuxgoofflineandenjoytheday
            1. <?php
              session_start();
              session_register("schalter");

              if ($_GET["licht"]=="an")  {
                $schalter="an";}

              elseif ($_GET["licht"]=="aus")  {
                $schalter="aus";}

              elseif ($_GET["licht"]=="golden") {
                $schalter="golden";}

              ?>

              So. Bin alles durchgegangen. Hätte eigentlich funktionieren sollen. Aber da ist ein Fehler auf Line 11. Ich habe keine Ahnung was da falsch ist. Arbeite ja kaum mit PHP :-(

              1. Huhu Simon

                So. Bin alles durchgegangen. Hätte eigentlich funktionieren sollen. Aber da ist ein Fehler auf Line 11. Ich habe keine Ahnung was da falsch ist. Arbeite ja kaum mit PHP :-(

                üblicherweise enthält die Fehlermeldung weitere wichtige Informationen.
                Das obige Snippet ist jedenfalls korrekt, d.h. der Fehler tritt vermutlich in einem anderen Script auf.

                Lies Dir die Fehlermeldung genau durch, und wenn Du nicht weiterkommst poste mal die Fehlermeldung.

                Viele Grüße

                lulu

                --
                bythewaythewebsuxgoofflineandenjoytheday
                1. Lies Dir die Fehlermeldung genau durch, und wenn Du nicht weiterkommst poste mal die Fehlermeldung.

                  Die Fehlermeldung lautet: Parse error: parse error, unexpected '{' in /www/htdocs/v038933/simonciao/popup.php on line 11

                  Also bei dem was ich als letztes gepostet habe. Ist doch komisch, oder? Aber ich poste hier nochmal die beiden Dateien. Auf der site selber gibt es einen links zum popup die wie folgt aussehen: http://www.tele2vertrieb.de/simonciao/popup.php?licht=an

                  -------------------------------------------
                  Die Popup-Datei sieht so aus:

                  <?php
                  session_start();
                  session_register("schalter");

                  if ($_GET["licht"]=="an")  {
                    $schalter="an";}

                  elseif ($_GET["licht"]=="aus")  {
                    $schalter="aus";}

                  elseif ($_GET["licht"]=="golden") {
                    $schalter="golden";}

                  ?>
                  ---------------------------------------------
                  Und die Style.php so:

                  <?php

                  $css_map = array(
                  'an' => 'hell.css',
                  'aus' => 'dunkel.css',
                  'golden' => 'golden.css',
                  );

                  $s = $_SESSION["schalter"];

                  if (isset ($css_map[$s])) {
                      echo implode("", file ($css_map[$s]) );
                  } else {
                      echo implode("", file ("default.css"));
                  }

                  ?>
                  ----------------------------------------------

                  Sorry, aber ich bin wirklich PHP Anfänger und ich hasse es mir sowas vorkauen zu lassen. Aber wenn ich einmal sehe wie das richtig ist verstehe ich es auch besser. Irgendwie das selber rauszukniffeln geht immer schief :-\

                  Danke nochmals...

                  Simon

                  1. Hi!

                    ich sehe keinen Fehler. Includest Du die Datei "popup.php" irgendwo? Startest Du vielleicht mehrfach die Session? Ist die Datei "popup.php" tatsächlich die Datei deren Code Du gepostet hast? Kann es sein dass Du da vergessen hast was hochzuladen, oder in ein falschen Verzeichnis hochgeladen oder was weiß ich? Überschreib die Datei auf dem Server vielleicht nochmal mit der aktuellen Version. Was genau steht in Zeile 11?

                    Grüße
                    Andreas

                    1. Ich habe alles nochmal hochgeladen. Jetzt läuft die Prozedur ohne fehler ab. Aber die STyles werden nicht erkannt.

                      http://www.ciao.de/member_view_extended.php?MemberId=1038187

                      Das siehst du wenn du bei der URL auf die Glühbirne drückst...

                      :-(

                      Was soll ich machen?

                      1. Ich habe alles nochmal hochgeladen. Jetzt läuft die Prozedur ohne fehler ab. Aber die STyles werden nicht erkannt.

                        http://www.ciao.de/member_view_extended.php?MemberId=1038187

                        Das siehst du wenn du bei der URL auf die Glühbirne drückst...

                        Ich kenne leider Deinen Quellcode nicht gut genug. Du öffnest das Script popup.php. Darin setzt Du die Session-Variable schalter (was Du sinnvollerweise ohne session_register machen solltest, sondern mit $_SESSION['schalter'] = "blabla").

                        Und dann? Wo bleibt dann die SessionID? Du Mußt die SessionID dann natürlich irgenndwo anhängen, wenn Du, wie es aussieht in popup.php undten einen meta-refresh einsetzt, dann mußt Du an die Adresse die Session ID hängen, mit "datei.php?".session_name()."=".session_id()

                        Dann hast Du auf der nächsten Seite auch die SessionID. Und lass Dir dann mal var_dump($_SESSION); ausgeben, damit Du weißt was da drin steht / ob das was drin steht!

                        Grüße
                        Andreas

  2. hi,

    ich bin mir selbst nicht sicher, aber verwende mal die funktion strcmp(string1, string2) anstelle von "==", um die beiden strings miteinander zu vergleichen. achtung, wenn sie gleich sind, gibt die funktion den wert 0 zurück und nicht 1.

    Ilja