css daten aus Datenbank?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • css daten aus Datenbank?

    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

  • #2
    Hallo,

    Originally posted by Scotch View Post
    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?

    Originally posted by Scotch View Post
    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"?

    Originally posted by Scotch View Post
    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
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Comment


    • #3
      Hallo Amica,

      erst einmal vielen Dank für Deine schnelle Antwort.
      Originally posted by AmicaNoctis View Post
      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.

      Originally posted by AmicaNoctis View Post
      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.
      PHP Code:
      <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.

      Originally posted by AmicaNoctis View Post
      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.

      Originally posted by AmicaNoctis View Post
      Gruß,

      Amica
      Gruß Scotch

      Comment


      • #4
        Originally posted by Scotch View Post
        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.
        PHP Code:
        <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.

        Originally posted by Scotch View Post
        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.
        Last edited by AmicaNoctis; 15-01-2010, 08:29.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Comment


        • #5
          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....
          "I don't want to belong to any club that would accept me as a member."

          Groucho Marx

          Comment


          • #6
            Hallo Mcmurphy,
            Originally posted by mcmurphy View Post
            so ähnlich wie bei myspace der Profil editor?
            myspace kenne ich nicht.
            Originally posted by mcmurphy View Post
            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 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

            Comment


            • #7
              Originally posted by Scotch View Post
              Aber alles in eine Session zu laden 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
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Comment


              • #8
                Am Resourcen- und Nervernschonendsten wäre aus meiner Sicht wohl folgendes:
                1. Im HTML Code semantische CSS Klassen verteielen (zB: <div class="header">...</div> oder <a class="user_profile" ...>...</a>)
                2. Im Kopf deiner HTML Seite eine PHP Datei wie eine CSS Datei einbinden (zB: <link rel="stylesheet" href="userstyle.css.php" type="text/css" />)
                3. In dieser PHP Datei fügst du folgenden Kopf ein:
                  PHP Code:
                  <?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... */
                Last edited by DSitC; 02-02-2010, 12:13.

                Comment

                Working...
                X