Felix-ch: Unterschiedliche CSS anhängen

Hallo miteinander.
Ich möchte für eine Site folgendes einbauen (mit php wenn möglich):
falls url == http:www.meineseite.ch/id=20, hänge stylesheet "style20.css" an.
falls url == http:www.meineseite.ch/id=30, hänge stylesheet "style30.css" an.

Wie funktioniert das mit php? Da ich vom Actionscript-Bereich herkomme dachte ich da an eine if-schleife?

Grüsse aus der Schweiz

  1. Hallo Felix,

    Hallo miteinander.
    Ich möchte für eine Site folgendes einbauen (mit php wenn möglich):
    falls url == http:www.meineseite.ch/id=20, hänge stylesheet "style20.css" an.
    falls url == http:www.meineseite.ch/id=30, hänge stylesheet "style30.css"

    Wie funktioniert das mit php? Da ich vom Actionscript-Bereich herkomme dachte ich da an eine if-schleife?

    Es gibt keine if-Schleifen. Ich würde mit modRewrite der angegebenen URl erstmal sowas zuordnen wie example.com/index.php?id=20 und dann kannst du einfach mit $_GET['id'] den wert auslesen.

    Z.B.

    <?php
    $id = $_GET['id'];
    if($id == '20')
      echo '<link rel="stylesheet" href="style20.css" />';
    if($id == '30')
      echo '<link rel="stylesheet" href="style30.css" />';
    ?>
    (ungetestet)
    Jonathan

    1. echo $begrüßung;

      (ungetestet)

      Es macht zwar das Gewünschte, ist aber

      $id = $_GET['id'];

      Dieses Umkopieren ist überflüssig. Du kannst genauso gut mehrfach auf $_GET['id'] zugreifen.

      if($id == '20') ...
      if($id == '30') ...

      Für solche Fälle gibt es das switch-Konstrukt.

      echo "$verabschiedung $name";

      1. Hallo dedlfix,

        $id = $_GET['id'];

        Dieses Umkopieren ist überflüssig. Du kannst genauso gut mehrfach auf $_GET['id'] zugreifen.

        In diesem Fall ist es nicht unbedingt notwendig, aber falls die Variable häufiger verwendet wird, kann es sinnvoll sein. Sollte beispielsweise später mal der Wert nicht mehr mittels GET übergeben werden, brauchen nicht alle Vorkommen der Variable sondern nur die eine Zuweisung geändert werden.

        Schöne Grüße,

        Johannes

        1. echo $begrüßung;

          $id = $_GET['id'];
          Dieses Umkopieren ist überflüssig. Du kannst genauso gut mehrfach auf $_GET['id'] zugreifen.
          In diesem Fall ist es nicht unbedingt notwendig, aber falls die Variable häufiger verwendet wird, kann es sinnvoll sein.

          Nun ja, und dann gibt es auch noch die Ausrede mit der Mehrarbeit beim Tippen von $_GET['id'] gegenüber $id. Das Anlegen einer neuen Variable bekäme einen Sinn, wenn das im Zuge einer Prüfung der Eingabewerte passiert. Ansonsten verschleiert es nur die Herkunft des Inhalts, ohne großen Nutzen zu bringen.

          Sollte beispielsweise später mal der Wert nicht mehr mittels GET übergeben werden, brauchen nicht alle Vorkommen der Variable sondern nur die eine Zuweisung geändert werden.

          Wenn man sowas vorhat, sollte man wohl besser eine gute Strukturierung und Teilung der Aufgaben des Programms nach dem EVA-Prinzip mit wohl definierten Schnittstellen zwischen ihnen in Betracht ziehen. Dann können die Eingaben sonstwoher kommen, ohne dass V und A angepasst werden müssen, wenn sich die Datenquelle ändert.

          Doch ob sich all der Aufwand lohnt, muss der OP selbst wissen.

          echo "$verabschiedung $name";

          1. Hallo dedlfix,

            Das Anlegen einer neuen Variable bekäme einen Sinn, wenn das im Zuge einer Prüfung der Eingabewerte passiert. Ansonsten verschleiert es nur die Herkunft des Inhalts, ohne großen Nutzen zu bringen.

            Nein, die zusätzliche Variable hat genug Sinn. Vielleicht will ich ja später auch noch andere Quellen für die "id" haben, z.B. eine Cookie oder eine Standard-Einstellung.

            So wie ichs gemacht hab, kann ich einfach sowas machen:

            $id = "20";
            if (hasUserPreference('id'))
              $id = getUserPreference('id');
            if ($_GET['id'])
              $id = $_GET['id'];
            und kann trotzdem nachher einfach auf $id prüfen.

            Wenn ich nachher überall $_GET['id'] einbaue, bin ich erstmal mit Suchen und Ersetzen beschäftigt, mal ganz abgesehen davon, dass es wesentlich kürzer wäre, von vorneherein überall $id zu schreiben.

            Jonathan

            1. echo $begrüßung;

              Das Anlegen einer neuen Variable bekäme einen Sinn, wenn das im Zuge einer Prüfung der Eingabewerte passiert. Ansonsten verschleiert es nur die Herkunft des Inhalts, ohne großen Nutzen zu bringen.

              Nein, die zusätzliche Variable hat genug Sinn. Vielleicht will ich ja später auch noch andere Quellen für die "id" haben, z.B. eine Cookie oder eine Standard-Einstellung.

              Du scheinst ja das Anliegen des OP sehr genau zu kennen. Meine Glaskugel ist da leider wesentlich ungenauer. Für das was bisher bekannt ist, reicht ein switch. Das bekommt $_GET['id'] genau einmal. Diese eine Stelle kann, falls das wirklich irgendwann mal erforderlich sein sollte, recht einfach geändert werden. Und für die Standard-Einstellung gibt es den default-Zweig.

              if ($_GET['id'])
                $id = $_GET['id'];

              Was willst du mit der booleschen Prüfung des Inhalts von $_GET['id']? PHP ist nicht Javascript. Um die Existenz einer Variablen (oder eines Array-Elements) zu prüfen, gibt es isset().

              mal ganz abgesehen davon, dass es wesentlich kürzer wäre, von vorneherein überall $id zu schreiben.

              Ja, dieses beliebte Argument führte ich bereits an. Und weil es so schön kurz ist, lässt man beim Kopieren auch noch sämtliche Prüfungen weg ...

              echo "$verabschiedung $name";

              1. Hallo dedlfix,

                Du scheinst ja das Anliegen des OP sehr genau zu kennen. Meine Glaskugel ist da leider wesentlich ungenauer. Für das was bisher bekannt ist, reicht ein switch. Das bekommt $_GET['id'] genau einmal.

                Ich schreibe den Code gerne so, dass man ihn einfach erweitern kann.

                Was willst du mit der booleschen Prüfung des Inhalts von $_GET['id']? PHP ist nicht Javascript. Um die Existenz einer Variablen (oder eines Array-Elements) zu prüfen, gibt es isset().

                Jo, hab ich wohl verwechselt. In letzter Zeit programmiere ich auch viel mehr Javascript als PHP.

                Jonathan

          2. Hallo dedlfix,

            Nun ja, und dann gibt es auch noch die Ausrede mit der Mehrarbeit beim Tippen von $_GET['id'] gegenüber $id. Das Anlegen einer neuen Variable bekäme einen Sinn, wenn das im Zuge einer Prüfung der Eingabewerte passiert. Ansonsten verschleiert es nur die Herkunft des Inhalts, ohne großen Nutzen zu bringen.

            Ich halte es auch für Geschmackssache, wobei in diesem Fall hier das Kopieren wirklich überflüssig war. Ansonsten stimme ich dir natürlich zu, dass man sich bei größeren Projekten im Voraus eine sinnvolle Struktur überlegen sollte, die solche Dinge kapselt.

            Schöne Grüße,

            Johannes