kostenloser Webspace werbefrei: lima-city


PHP Variable per Link ändern

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    copynpaste

    Kostenloser Webspace von copynpaste

    copynpaste hat kostenlosen Webspace.

    Mein Problem besteht darin:

    Ich will auf meiner Homepage über PHP entweder das eine Stylesheet auswählen oder eben das Zweite (dient zur Farbänderung der Seite - einmal schwarz-grün oder schwarz-rot).
    if($variable=="rot"){
    echo "...rot.css";
    }
    else{
    echo "...grün.css";
    }


    Zurzeit arbeite ich mit einem einfachen GET:

    $_GET["style"];


    Allerdings hätte ich den Style gern in einer Variable stehen, die sich beim Klick auf einen Link oder Button etc ändert.
    Ich will nämlich nich alles in der Browserzeile stehen haben.

    Ist das denn einfach so möglich?

    Danke für antworten :)
    MfG CnP

    PS: Arbeite momentan nur lokal mit Xampp.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. t******r

    Hallo copynpaste,

    Du könntest, falls du mit Sessions arbeitest, eine Sessionvariable definieren und diese mit einer Post-Variable ändern.
    Dafür ein "hidden" Feld mit dem Variablename und dem value, den du mitgeben möchtest definieren, und den zugehörigen Button um das Formular auf die Reise zu schicken.

    Die Seite musst dann zwar auch neu geladen werden, allerdings ist die Variable dann nicht in der Browserleiste direkt lesbar.

    Eine weitere Alternative wäre ganz einfach ein Javascript :)

    Gruss
    pete
  4. Autor dieses Themas

    copynpaste

    Kostenloser Webspace von copynpaste

    copynpaste hat kostenlosen Webspace.

    Danke für die Antwort,
    hast du eventuell noch nen kleinen Code zum Denkanstoß?
    Mit Sessions hab ich noch nicht wirklich gearbeitet und weiß nicht Recht wie ich die Value auch die Variable bringen soll..

    Mit der Seite neu laden weiß ich ja, muss ja bei PHP auch schon so sein. Javascript will ich an der Stelle nicht verwenden.. :)
  5. t******r

    Also das könnte etwa so aussehen:

    <?php
    session_start();
    if (isset($_POST['btnStyle'])) {
    $_SESSION['style'] = $_POST["intStyle"]
    }
    
    switch ($_SESSION['style']) {
    
    case 1:
    $css = "style1.css";
    break;
    
    case 2:
    $css = "style2.css";
    break;
    }
    
    ?>
    <html>
     <head>
          <link rel="stylesheet" type="text/css" href="<?php echo $css; '>">
     </head>
    <body>
       <form action="diesesfile.php" method="post">
          <input type="hidden" name="intStyle" value="1" />
          <input type="submit" name="btnStyle" value="Style1" />
       </form>
       <form action="diesesfile.php" method="post">
          <input type="hidden" name="intStyle" value="2" />
          <input type="submit" name="btnStyle" value="Style2" />
       </form>
    </body>
    </html>


    Irgendwie. Behafte mich nicht darauf, hab das schnell selber geschrieben ^^
  6. Autor dieses Themas

    copynpaste

    Kostenloser Webspace von copynpaste

    copynpaste hat kostenlosen Webspace.

    Danke werd ich nachher mal probieren, geb dann auch bescheid ob es so funktioniert oder nicht :)

    MfG
  7. heroes-of-legends

    heroes-of-legends hat kostenlosen Webspace.

    Hier vielleicht eine etwas elegantere variante für das clientside-control zum ändern der ansicht.

    <?php
    session_start();
    $styles = array("Default" => "default.css", "Custom1" => "custom1.css", "Custom2" => "custom2.css");  //Deklaration der Stylesheets
    if (isset($_POST["newStyle"])) { 
      //Prüfen ob style geändert wurde und ggf. in session neu setzen.
      $_SESSION["current_style"] = $_POST["newStyle"];
    } 
    
    if (!isset($_SESSION["current_style"])) {
      //Standardstyle setzen wenn keiner gesetzt.
      $_SESSION["current_style"] = "Default";
    }
    
    ?>
    
    
    
    <html><head>
    <link rel="stylesheet" type="text/css" href="stylesheets/<?php echo $styles[$_SESSION["current_style"]]; ?>
    </head><body>
    
    
    <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
    <!--Mir ist bekannt das das obsolete ist, ich kenne allerdings keinen neuen ersatz hierfür.-->
    
    <select  name="newStyle" onchange="this.form.submit();"><!--Select mit onchange->submit funktion-->
    
    <?php
    foreach ($styles as $key => $value) {
      //Styles dynamisch in Dropdown darstellen und automatisch den aktuellen selektieren.
      if ($_SESSION["style"] == $key) {
          echo "<option selected>".$key."</option>";
      } else {
          echo "<option>".$key."</option>";
      }
    } ?>
    
    </select>
    
    </form></body></html>


    grüße
    Doomdrake

    Beitrag zuletzt geändert: 5.6.2011 20:41:02 von heroes-of-legends
  8. Autor dieses Themas

    copynpaste

    Kostenloser Webspace von copynpaste

    copynpaste hat kostenlosen Webspace.

    Danke ihr beiden, eure beiden Varianten funktionieren super! :)

    Allerdings muss ich bei thegeter etwas berichtigen:
    <link rel="stylesheet" type="text/css" href="<?php echo $css; ?>">

    Und bei heroes-of-legends funktionier es bei mir allerdings nicht dass in der Kombobox das ausgewählte Style angezeigt wird, ansonsten gute Arbeit :)

    MfG CnP
  9. heroes-of-legends

    heroes-of-legends hat kostenlosen Webspace.

    copynpaste schrieb:
    Und bei heroes-of-legends funktionier es bei mir allerdings nicht dass in der Kombobox das ausgewählte Style angezeigt wird, ansonsten gute Arbeit :)


    probier es ggf. mal so:
    [...]
    if ($_SESSION["style"] == $key) {
    echo "<option selected='true'>".$key."</option>";
    } else {
    echo "<option>".$key."</option>";
    }
    [...]

    falls das auch noch nicht geht, probier mal, per Ausgabe oder über den html-quelltext, ob der Ausdruck "$_SESSION["style"] == $key" überhaupt mal wahr wird. An sonsten musst du ggf. mal eine string-vergleichs-funktion probieren. Das sollte theoretisch nicht notwendig sein, da es sich vermutlich nur um ein browser-css-kompatibilitätsproblem handelt.

    grüße
    Doomdrake

    Beitrag zuletzt geändert: 6.6.2011 0:00:21 von heroes-of-legends
  10. Autor dieses Themas

    copynpaste

    Kostenloser Webspace von copynpaste

    copynpaste hat kostenlosen Webspace.

    Danke, aber werd wohl eher keine Kombobox, sondern eher Buttons nehmen, da das besser in meine Vorstellung reinpasst :)

    Zum Browser:
    Bin leidenschaftlicher Opera-User, weiß nicht ob es da so nicht funktioniert? Hab auch Firefox, Internet Explorer etc. allerdings jetzt nicht getestet. :P
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!