Simon: Styleübertragung via Formular?

Ich möchte von einem externen Fenster (style.php) den CSS-Style in einem anderen Fenster ändern.

<html>
<head>
<title></title>
</head>
<body>

<?php if ($typ==1) {?>

<style type="text/css">
<!--
.supersache {color:red;}
-->
</style>

<?php }?>

</body>
</html>

Hier möchte ich dann ein Stylesheet einbinden und dann per formular an dat andere Fenster "senden" . es braucht dann also nur einen button der per php-code $typ ändert ... die ERSTE FRAGE ist: WIE?

In dem Quelltext wo der Style dann geändert werdnen soll steht u.a. folgendes drin, damit das auch geht: <link rel="stylesheet" href="style.php?typ=1" type="text/css">

Wie kann ich das ganze machen? Ich glaube da fehlt ir noch die ein oder andere kleinigkeit. Danke für die hilfe,

Simon

  1. Hallo,

    hm würde dir ja gerne helfen aber so wie du das beschrieben hast steige ich durch dein Vorhaben nicht durch.
    kannste das mal genauer erklären ??
    Willst du 2 fenster gleichzeitig aufhaben im einen fenster einen button drücken und dann ändert sich was im anderen fenster ??

    1. Willst du 2 fenster gleichzeitig aufhaben im einen fenster einen button drücken und dann ändert sich was im anderen fenster ??

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

      Genau das. Ich will dass, wenn ich in einem Fenster auf einen Button drücke, sich beim anderen das Layout ändern (css datei)

      1. Das verursacht nur Probleme denke ich...php wird serverseitig interpretiert und die sache mit dem Fensteransprechen funktioniert mit Javascript, also clientseitig.
        Also das geht bestimmt auch ohne php zu nutzen.
        http://selfhtml.teamone.de/javascript/objekte/window.htm
        könnte hilfreich sein.
        vielleicht auch nochma in der objekt-referenz von JS in Selfhtml nach document.write schaun.
        Habe jetzt auch keine andere idee.

        1. Hallo,

          Das verursacht nur Probleme denke ich...php wird serverseitig interpretiert und die sache mit dem Fensteransprechen funktioniert mit Javascript, also clientseitig.

          Ich kann nicht sehen, wo das Probleme machen sollte. Da Du ja schon richtig von Client und Server sprichst, musst Du Dir einfach nur vorstellen, was passiert. Beim Posten des Formulars wird doch ein Request an den Server ausgelöst. Dieser Request sorgt für eine Antwort. Es kommt eine Datei zurück. Das Ziel dieser Datei wird bestimmt durch das target-Attribut im <form ...> Tag oder im <a href...> Tag. Man kann als Target jeden gültigen Fensternamen angeben, also z.B:

          <form action="styleschalter.php" target="styleausgabe" method="post" ...>

          Nun wird der Browser beim Absenden des Requests ein Fenster mit dem Namen "styleausgabe" öffnen. Wenn es noch keines gab, ein neues, sonst benutzt er das vorhandene. Und wenn die Antwort vom Server kommt, wird die in diesem Fenster angezeigt.

          Die Antwortdatei löst ihrerseits nun wieder einen Request auf die Link-Ressourcen aus, also z.B. auf die externe Styledatei, auf Images und externe Javascriptdateien und lädt die nach.

          Wenn die ganzen "Subrequests" erledigt sind, ist die Seite fertig.

          Du kannst also auf dem Server der Seite jederzeit eine andere Linkressource reinschreiben lassen.

          Nachteil dieser Sache steckt wo ganz anders. Wenn das Fenster mit dem Namen "styleausgabe" nun schon geöffnet ist und durch Klicken auf Deinen Buttem in Deinem Bedienfesnter hinter dieses verschwindet, bleibt es dort. Es kommt nicht automatisch nach oben. Da muss man dann der Response ein bisschen JavaScript beimischen

          ...
          <head>
          <title>Farbmuster <?php echo $musternummer ?></title>
          <script type="text/javascript>
          window.focus();
          </script>
          </head>
          ...

          Das das nicht ohne geht, ist eine echte Lücke in HTML. Man könnte das ja auch im target-Attribut oder einem weiteren übergeben. Vielleicht hab ich ja auch nur was übersehen???

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
          1. Naja, was daran so schwer sein soll? Oder ich hab die Problematik nicht richtig verstanden.

            Beispiel:

            <datei mit dem zu anderndem stylesheet>
            im Head einfach das Stylesheet folgendermaßen einbinden:

            <?php $stylename = empty($_GET['stylename']) ? "Standard-Style" : $_GET['stylename'] ; ?>
            <link rel="STYLESHEET" type="text/css" href="<?php echo $stylename; ?>.css">
            </datei mit dem zu anderndem stylesheet>

            <datei mit dem zu anderndem stylesheet>
            hier einfach Links anlegen, die die jeweiligen StyleSheets laden

            <a href="datei.php?stylename=BEISPIEL-STYLE" target="NAME DES ZIELFENSTERS">
            </datei mit dem zu anderndem stylesheet>

            Das war's dann auch schon, wozu ein Formular? Würde damit aber auch ohne Probleme funktionieren. Man sollte dabei dann das $_GET[] durch $_POST[] ersetzen. Fertig :)

            Das bezieht sich alles auf register_globals=off!

            Hoffe ich konnte helfen (und hab nicht zuviel Schwachsinn verzapft *g*)!