beda: stylesheet ändert sich...

hallo!

also, ich habe folgendes problem.
ich habe mir mit php einen styleswitcher programmiert, der sich über $_GET den stylesheet namen holt und das stylesheet dann dementsprechend verlinkt, sodass es verwendet wird.

nur gibt es da ein problem:

klicke ich mich durch die verschiedensten seiten meiner homepage, wird
  das stylesheet beim ersten klick auf einen link zu einer anderen seite
  einfach 'vergessen', d.h. es wird das alte stylesheet verwendet. - nun
  soll aber das stylesheet, das man durch klick verändert immer aktiv
  bleiben. - wie kann ich das machen?

alle dateien meiner hp sind in einem array zusammengefasst und dort
  als nummern 'maskiert' worden, sodass ich nun eine zentrale ausgabe
  seite verwende, wo der inhalt mittels php hereingeladen wird.

'URL-mässig' sieht das so aus: ... home.php?id=67

(das stylesheet selber soll in der url über ein & drangehängt werden,
dass es so aussieht: home.php?id=67&stylesheet=1. wie kann ich den namen vom stylesheet unabhängig vom dateinamen an die url hängen?

p.s. was ist eigentlich der unterschied zwischen einer URL und URI?

danke für eure antworten
gruss
 beda

  1. Moin!

    ich habe mir mit php einen styleswitcher programmiert, der sich über $_GET den stylesheet namen holt und das stylesheet dann dementsprechend verlinkt, sodass es verwendet wird.

    nur gibt es da ein problem:

    Richtig: Wenn du den Parameter für "anderes Stylesheet" nicht an deine Links der Seite dranhängts, geht diese Information nicht mit auf die nächste Seite.

    Alternativen:
    1. Alle deine Links abändern, so dass die Info mit übergeben wird (auch für das Standard-Stylesheet sollte es dann einen gültigen Wert geben).
    2. Die Information in einem Cookie setzen und dann $_COOKIE auswerten. Damit kann man das gewählte Stylesheet auch längerfristig speichern, die Wahl wäre je nach deinen Einstellungen beispielsweise 2 Wochen oder 20 Jahre im Browser gespeichert - oder nur bis zum Schließen des Browsers.
    3. Eine Session starten und die Information serverseitig behalten - halte ich aber für Overkill.

    - Sven Rautenberg

    1. hi!

      1. Eine Session starten und die Information serverseitig behalten - halte ich aber für Overkill.

      und genau ich habe eine session gestartet...

      if($_GET['stylesheet'] == 1) {
         $_SESSION['stylesheet'] = 1;
      }

      ... im dokument selber
      if($_SESSION['stylesheet'] == 1) {
        echo '<link rel="stylesheet"...>';
      }

      wobei mir aber das &stylesheet=1 eben nur auf dem damit verlinkten link beibehalten bleibt...

      wie kann ich es sonst noch für jede seite beibehalten?

      gruss
       beda

      1. Moin!

        1. Eine Session starten und die Information serverseitig behalten - halte ich aber für Overkill.

        und genau ich habe eine session gestartet...

        Wo? Ich sehe nirgend session_start().

        Außerdem würde ich dieses Problem eben gerade NICHT über eine Session lösen, sondern über ein individuelles Cookie. set_cookie() ist dein Freund.

        http://de3.php.net/set-cookie

        - Sven Rautenberg

  2. Hallo.

    klicke ich mich durch die verschiedensten seiten meiner homepage, wird
      das stylesheet beim ersten klick auf einen link zu einer anderen seite
      einfach 'vergessen', d.h. es wird das alte stylesheet verwendet. - nun
      soll aber das stylesheet, das man durch klick verändert immer aktiv
      bleiben. - wie kann ich das machen?

    "Cookie" und "Session-ID" sind die Begriffe, die du suchst.

    p.s. was ist eigentlich der unterschied zwischen einer URL und URI?

    Das "L" steht für "Location", gibt also den Ort an, an dem die Ressource zu finden ist. Das "I" steht für "Identifier" und identifiziert die Ressource eindeutig.
    MfG, at

  3. Hallo!

    also, ich habe folgendes problem.
    ich habe mir mit php einen styleswitcher programmiert, der sich über $_GET den stylesheet namen holt und das stylesheet dann dementsprechend verlinkt, sodass es verwendet wird.

    Wie habe ich mir genau diesen Vorgang forzustellen? Poste mal bitte den entsprechenden Teil des Dokuments, des PHP-Scripts (welches die Fallentscheidung übernimmt) und einer CSS-Datei, die bei einem Fall eingebunden werden soll.

    nur gibt es da ein problem:

    klicke ich mich durch die verschiedensten seiten meiner homepage, wird
      das stylesheet beim ersten klick auf einen link zu einer anderen seite
      einfach 'vergessen', d.h. es wird das alte stylesheet verwendet.

    Über welches Konstrukt teilst Du dem PHP-Script denn bei jedem Aufruf eines neuen Dokuments die entsprechenden $_GET-Werte mit?

    - nun
      soll aber das stylesheet, das man durch klick verändert immer aktiv
      bleiben. - wie kann ich das machen?

    schlicht und ergleifend könntest Du einem Dokument "index.php" einen Querystring übergeben und dann mittels PHP entscheiden, wie vorzugehen ist:

    <?php
    $array_aller_moeglichen_CSS=array('001.css','002.css', [usw.]);
    if(in_array($_SERVER['QUERY_STRING']))
       echo '<link rel="stylesheet" media="[...]" href="verzeichnis/pfad/'.$_SERVER['QUERY_STRING'].'">';
    else
       echo '<link rel="stylesheet" media="[...]" href="verzeichnis/pfad/standard.css">';
    ?>

    alle dateien meiner hp sind in einem array zusammengefasst und dort
      als nummern 'maskiert' worden, sodass ich nun eine zentrale ausgabe
      seite verwende, wo der inhalt mittels php hereingeladen wird.

    'URL-mässig' sieht das so aus: ... home.php?id=67

    Warum machst Du den sowas? Erstens ein Heidenaufwand, zweitens haben Suchmaschinen damit nicht unbedingt freude und drittens gibt es auch noch $_SERVER["PATH_INFO"], was sich wesentlich einfacher auf eine X-beliebige Verzeichnisstruktur abbilden läß, die nicht mal in der DocumentRoot des Server liegen müssen.

    (das stylesheet selber soll in der url über ein & drangehängt werden,
    dass es so aussieht: home.php?id=67&stylesheet=1. wie kann ich den namen vom stylesheet unabhängig vom dateinamen an die url hängen?

    Die Frage verstehe ich nicht. Oben hattest Du geschrieben, Du vergibst dazu Nummern, der Querystring "home.php?id=67&stylesheet=1" spiegelt dies auch wieder; aber worauf bezieht sich jetzt Deine Frage?

    p.s. was ist eigentlich der unterschied zwischen einer URL und URI?

    Keine Ahnung - die Frage gebe ich doch prompt mal weiter ;)

    Gruß aus Berlin!
    eddi

    --
    at, wie er leibt und lebt auf ein Posting
    > > Nein, ich denke nicht.
    gepromptet
    > Das empfiehlt sich aber.
    :))))