jeeroy
Goto Top

Warum gehen die Variablen in der PHP CSS nicht?

Hey ich probiere eine php Datei zu erstellen, die als CSS Datei genommen wird, doch treten da dauernd Fehler auf.

Wichtig ist für mich, dass ich die Farben später aus der SQL Datenbank rauslesen kann, sodass ich sie in einem Backend immer ändern kann.
Deswegen wollte ich PHP in meiner CSS Datei haben, also eine PHP Datei, die als CSS Datei dient.

Eingelesen wird sie so und natürlich im <head> Bereich:
<link rel="stylesheet" type="text/css" href="<? echo $pfad_css_long; ?>style.php" />  

Meine style.php sieht derzeitig so aus:

<?php
header("Content-type: text/css");  
$header_bgcolor = "#000";  
?>
}
body {
            background-color: #eee;
}



.header {
            background-color: #555;
            border: 1px solid #000000;
}

		
.navi {
            background-color: <? echo $header_bgcolor; ?>;
            border: 1px solid #000000;
}

Die CSS ist noch sehr kurz, zum testen.
Warum in Zeile 5 ein } ist....
Komischerweise wird dann der erste Abschnitt
body {
            background-color: #eee;
}
auch mit Berücksichtigt, habe ich in Zeile 5 das } nicht, startet er erst nach body { }.

In Zeile 19 übernimmt er nicht die Farbe aus der Variable (#000), sondern lässt es weiß.

Ich versteh das nicht, habe schon viel im Internet geguckt und die haben das da genau so???

Bitte um Hilfe

Content-ID: 170820

Url: https://administrator.de/contentid/170820

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

ganymed
ganymed 02.08.2011 um 16:31:44 Uhr
Goto Top
Hallo,

meiner bescheidenen Meinung nach wird deine style.php überhaupt durch den PHP Parser verarbeitet.
Der zweite Fehler aus meiner Sicht ist, dass du versuchst einen header zu senden.
Dieser ist bereits gesendet und zwar in deiner html Datei vor dem öffnenden <html> also lange vor dem einbinden deines stylesheets.

Was du aber machen kannst ist folgendes.

index.php
<html>
<head>...
<?php include 'style.php';?>  
...

style.php
<style type="text/css">  
<!--
...
.navi {
          background-color: <? echo $header_bgcolor; ?>; 
          border: 1px solid #000000; 
} 
...
-->
</style>

Was ich jetzt noch nicht aufgenommen habe ist das füllen der Variable $header_bgcolor. Dafür stehn die ... face-wink
Jeeroy
Jeeroy 02.08.2011 um 16:38:54 Uhr
Goto Top
Hmm, ich habe gerade in diesem Augenblick rausbekommen, dass wenn ich in meiner verlinkung, also:

<link rel="stylesheet" type="text/css" href="<? echo $pfad_css_long; ?>style.php" />  

einfach das PhP wegnehme sprich:
<link rel="stylesheet" type="text/css" href="css/style.php" />  

Dann funktioniert es,...

Ich habe es überall so gelesen, dass es so mit den headern gemacht wird.
Valume91
Valume91 02.08.2011 um 16:46:13 Uhr
Goto Top
Moin Jeeroy

Wo hast du den das so gesehen?
Belehrt mich eines besseren aber so sieht das für mich schaurig aus (php datei so einzubinden; css in der php datei).
Deshalb hier mein Vorschlag:

1. Definiere dein CSS in der PHP Datei mit den HTML Style Tags (Wie das geht hier )
2. Binde die PHP Datei anschliessen per include ein.
In deinem Fall:
<?php
include $pfad_css_long. 'style.php';  
?>

So ist es dir auch möglich an stelle der Farbe eine Variable einzusetzten.
Eventuell funktioniert es auch noch einfacher.

Ich hoffe dir behilflich gewesen zu sein.

MfG Valume
Valume91
Valume91 02.08.2011 um 16:49:22 Uhr
Goto Top
Hopala, Beitrag von ganymed war noch nicht das als ich zu schreiben begonnen habe ;)
ganymed
ganymed 02.08.2011 um 17:01:38 Uhr
Goto Top
Hab mal google gefragt und siehe da auch ich habe links dazu gefunden und somit was dazu gelernt.
href="css/style.php" soll wohl so funktionieren.
Ich selbst habe das noch nie so gemacht, weiß aber mit Sicherheit, dass meine angedeutete Lösung funktioniert.
Einzige Idee die ich jetzt noch habe ist, dass in deiner Variable $pfad_css_long nicht das drin steht was du dort erwartest.
ganymed
ganymed 02.08.2011 um 17:04:03 Uhr
Goto Top
Hallo Valume,
macht ja nichts mir geht das auch oft so.
dog
dog 02.08.2011 um 18:23:36 Uhr
Goto Top
Dieser ist bereits gesendet und zwar in deiner html Datei vor dem öffnenden <html> also lange vor dem einbinden deines stylesheets.

Bitte was?!

Der TO bindet die CSS-Datei über HTML-Links ein, dass sind zwei völlig verschiedene Requests!


<?php include 'style.php';?>

genauso die "Lösung" von Valume91

Nein, niemals!
Das würde das Stylesheet direkt ins HTML einbetten und das ist ein riesiger Performance-Fehler.

Es gibt übrigens für jeden Browser mittlerweile tolle Debug-Tools...
Jeeroy
Jeeroy 03.08.2011 um 07:52:26 Uhr
Goto Top
Guten Morgen,

@dog: Was für Debug-Tools könntest du empfehlen?

@Valume91 & ganymed: Hier steht das ganz gut Beschrieben:

http://www.webmasterpro.de/coding/article/php-in-css-dss-dynamic-style- ...


Trotzdem verwundert mich das sehr, dass es zu Problemen führte wenn ich
<link rel="stylesheet" type="text/css" href="<? echo $pfad_css_long; ?>style.php" />  
genommen habe.
Ich habe die Variable $pfad_css_long mal ausgeben lassen und sie beinhaltet:

D:/xampp/xampp/htdocs/minimax/mx_wcms/css/

Außerdem funktionierte die CSS ja zum Teil, Border und Farben wurden erkennt nur halt keine Variablen und es wurde erst ab der ersten } gearbeitet.

Mit dem Link funktioniert alles gut:
<link rel="stylesheet" type="text/css" href="css/style.php" />  


Liebe Grüße
ganymed
ganymed 03.08.2011 um 08:45:56 Uhr
Goto Top
Hallo,

eigentlich müsste da doch „http://localhost/minimax/mx_wcms/css/ “ , „./css/“ oder css/ verwendet werden.
Jeeroy
Jeeroy 03.08.2011 um 09:00:43 Uhr
Goto Top
*hehe

Da hast du wohl recht.
Da habe ich nicht bei der Pfadvergabe aufgepasst, danke ;)!

Stunden suchen wegen eines kleinen dummen Fehlers...