Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
css daten aus Datenbank? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-consult PHP Entwicklung
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
css daten aus Datenbank?


 
Scotch
15-01-2010, 00:24 
 
Hallo,

ich möchte das Layout von meiner Seite über ein Admin Bereich anpassen können.
Die Layout (css) Daten würde ich dann in einer DB Speicher (Hintergrundfarbe, Textfarbe...).
Aber wie bringe ich die dann auf die Seite? DB Abfrage ist klar, aber immer wenn ich
irgend wo eine CSS Formatierung benötige, immer eine DB Abfrage zu machen ist ja nicht sehr sinnig.
Ich könnte alle Einstellungen aus der DB in ein Array laden und daraus abfragen.
Oder würdet Ihr das anders lösen.
Gruß Scotch

 
AmicaNoctis
15-01-2010, 02:27 
 
Hallo,

ich möchte das Layout von meiner Seite über ein Admin Bereich anpassen können.

Lohnt sich das? Ich meine, wie oft wirst du das Layout ändern wollen? Was ist mit Hintergrundbildern für das Layout? Die sind ja fest im CSS verdrahtet und müssten dann ja auch in die DB. Was spräche dagegen, in der Administrationsoberfläche die CSS-Datei(en) über ein textarea-Element komplett zu ändern oder meinetwegen auch hochzuladen?

Aber wie bringe ich die dann auf die Seite? DB Abfrage ist klar, aber immer wenn ich
irgend wo eine CSS Formatierung benötige, immer eine DB Abfrage zu machen ist ja nicht sehr sinnig.

Ich würde in diesem Falle eine komplette CSS Datei generieren. Also ist das eine Abfrage pro Seite, oder was meinst du mit "immer wenn ich irgend wo [sic!] eine CSS Formatierung benötige"?

Ich könnte alle Einstellungen aus der DB in ein Array laden und daraus abfragen.

Könntest du das näher erläutern, denn momentan ergibt das für mich keinen Sinn. Wann willst du das denn abfragen? Willst du das CSS per AJAX nachladen oder schon klassisch mit ausliefern (empfohlen)? Wenn du es mit auslieferst, wozu dann das Array? Du musst ja ohnehin ein komplettes Stylesheet erzeugen.

Gruß,

Amica

 
Scotch
15-01-2010, 09:02 
 
Hallo Amica,

erst einmal vielen Dank für Deine schnelle Antwort.
Hallo,

Lohnt sich das? Ich meine, wie oft wirst du das Layout ändern wollen? Was ist mit Hintergrundbildern für das Layout? Die sind ja fest im CSS verdrahtet und müssten dann ja auch in die DB. Was spräche dagegen, in der Administrationsoberfläche die CSS-Datei(en) über ein textarea-Element komplett zu ändern oder meinetwegen auch hochzuladen?

Ob sich das Lohnt weiß ich noch nicht, das versuche ich noch für mich herauszufinden. Wozu das ganze soll, ist das ich meine Seite für andere
bereitstellen möchte, so das die Anwender dann das Layout für sich anpassen können. Ähnlich wie in einem Forum oder manchen Gästebüchern oder Bildergalerien.
Mit den Hintergrund Grafiken hast Du natürlich recht, wobei man diese in einem Ordner per FTP mit den gleich Namen und Größe hoch laden könnte. Das mit dem Textarear Element verstehe ich noch nicht ganz, wie Du das meinst.


Ich würde in diesem Falle eine komplette CSS Datei generieren. Also ist das eine Abfrage pro Seite, oder was meinst du mit "immer wenn ich irgend wo [sic!] eine CSS Formatierung benötige"?

Ich meine, wenn ich an statt die CSS ID/Calss in einem HTML Tag (heißt das so?)eintrage,
per PHP denn passenden Eintrag aus der DB Abfrage und dann per echo in dem HTML Tag einfüge.
z.b.
<li <?php echo css('li', 'navigation')?>>...... </li>

Weib css() dann eine Funktion wäre, die aus der DB dann die Daten für
genau dieses List Element holen würde.


Könntest du das näher erläutern, denn momentan ergibt das für mich keinen Sinn. Wann willst du das denn abfragen? Willst du das CSS per AJAX nachladen oder schon klassisch mit ausliefern (empfohlen)? Wenn du es mit auslieferst, wozu dann das Array? Du musst ja ohnehin ein komplettes Stylesheet erzeugen.

Ok habe ich mich etwas schlecht ausgedrückt.
Der Gedanke war das CSS in einer Datenbank an statt als File zu speichern.
und dann beim Seitenaufruf aus der DB in ein Array laden so müßte ich dann nur die Daten aus dem Array und nicht jedes mal aus der DB holen (ähnlich wie oben schon beschrieben).

Wie schon oben geschrieben, soll das Layout anpassbar sein, dass wenn
man das Script jemanden andrem zur Verfügung stellt, derjenige dann die Möglichkeit hat, das Layout an seiner Webseite anzupassen.


Gruß,

Amica

Gruß Scotch

 
AmicaNoctis
15-01-2010, 09:22 
 
Ich meine, wenn ich an statt die CSS ID/Calss in einem HTML Tag (heißt das so?)eintrage,
per PHP denn passenden Eintrag aus der DB Abfrage und dann per echo in dem HTML Tag einfüge.
z.b.
<li <?php echo css('li', 'navigation')?>>...... </li>


Das ist großer Käse! ;)

Du setzt einfach class-Attribute und zwar fest, also völlig unabhängig vom konkreten Layout. Das Styling machst du dann im CSS, wo jeder User sich auf Basis dieser Klassen was eigenes aussuchen kann. Daher: komplette CSS-Datei austauschbar, HTML-Code uniform. Anders wird es so ein Durcheinander, dass du in 2 Monaten selbst nicht mehr durchsiehst.

Das mit dem Textarear Element verstehe ich noch nicht ganz, wie Du das meinst.

Das hat sich dann schon erledigt. Wenn die Benutzer das selber ändern sollen, werden die kaum CSS lernen wollen. Der Vorschlag beruhte auf der Annahme, dass du komplette CSS-Dateien in einer textarea bearbeiten könntest, statt sie jedes Mal per FTP auszutauschen.

 
mcmurphy
15-01-2010, 12:24 
 
so ähnlich wie bei myspace der Profil editor?
Wie Amica Noctis schreibt würde ich auch CSS & Html komplett trennen, die CSS Klassen in einer Tabelle speichern. Die klassen und ihre werte dann in einer Session halten.
Wird aber ein wuchtiges Projekt....

 
Scotch
15-01-2010, 20:35 
 
Hallo Mcmurphy,
so ähnlich wie bei myspace der Profil editor?
myspace kenne ich nicht.

Wie Amica Noctis schreibt würde ich auch CSS & Html komplett trennen, die CSS Klassen in einer Tabelle speichern. Die klassen und ihre werte dann in einer Session halten.
Wird aber ein wuchtiges Projekt....
CSS ist bei mir schon getrennt vom Html.
Aber alles in eine Session zu laden :confused: davon bin ich auch
nicht so überzeugt.
Ich werde mir noch mal in einer ruhigen Minute Gedanken machen.
Erst mal Danke für Eure Anregungen.

Gruß Scotch

 
AmicaNoctis
15-01-2010, 21:04 
 
Aber alles in eine Session zu laden :confused: davon bin ich auch
nicht so überzeugt.

Dem schließe ich mich an. Die DB-Abfrage wird niemals so ressourcenlastig sein, dass sich das lohnt. Da die Browser CSS-Dateien ohnehin cachen, wird die Abfrage auch nur beim ersten Aufruf und danach nur bei vollständigen Reloads (Strg+F5) ausgeführt. Wenn man annimmt, dass ein Benutzer die Site nicht gleich nach der Startseite wieder verlässt, ist das also sogar noch ressourcenschonender als eine Session, obwohl der Unterschied ohnehin praktisch irrelevant ist.

Amica

 
DSitC
02-02-2010, 09:08 
 
Am Resourcen- und Nervernschonendsten wäre aus meiner Sicht wohl folgendes:


Im HTML Code semantische CSS Klassen verteielen (zB: <div class="header">...</div> oder <a class="user_profile" ...>...</a>)
Im Kopf deiner HTML Seite eine PHP Datei wie eine CSS Datei einbinden (zB: <link rel="stylesheet" href="userstyle.css.php" type="text/css" />)
In dieser PHP Datei fügst du folgenden Kopf ein:
<?php

// Inhaltstyp definieren, sonst liest der Browser die Datei nicht korrekt
header('Content-Type: text/css');

// Gültigkeitsdauer der CSS Datei bestimmen (hier: 1 Tag)
header('Expires: ' . date('r', time() + 86400));

// evtl. die Session öffnen
session_start();

// Datenbank Verbindung aufbauen
$userstyles = hole_benutzer_css_aus_datenbank($_SESSION['benutzerkey']);

?>

/* Hier kann man nun CSS & PHP Code verwenden */

div.header {
font-weight: 1.5em;
color: <?php echo($userstyles['header_color']); ?>;
}

a.user_profile {
text-decoration: none;
background-color: <?php echo($userstyles['user_link_bgcolor']); ?>;
}

/* etc... */


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:33 Uhr.