PHP Variable per Link ändern
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ansicht
arbeit
ausdruck
break
browser
button
code
dank
darstellen
definieren
funktion
leidenschaftlicher opera
probier
probieren
schwarz rot code
setzen
string
url
variable bringen
variable rot echo
-
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. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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.. :) -
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 ^^ -
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 -
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 -
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 -
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage