Malcolm Beck´s: PHP Befehle und Funktionen in den Tabellen verwenden

hi,

Ich weiss nicht mal, wie ich das beschreiben soll -- Ich versuchs mal:

Ich hab ein Feld Namens Inhalt, in diesem habe ich zum testen <?php echo 'test'; ?> eingefügt, wenn ich das jetzt im Browser aufrufe steht im Quelltext <?php echo 'test'; ?>, wie stelle ich es an, dass echo nur test ausgibt?

Geht das überhaupt?

Ich hab gerade was gefunden, eval(), doch eval() = evil(), wie löst ihr denn sowas?
Mir geht es darum, beispielsweise die <title>$my_title</title> Dynamisch zu verändern, und was sonst so anfällt.
-- Ich habe irgendwie den leisen verdacht das ganze ziemlich falsch verstanden zu haben, kann dass sein?  :)

Ich teste Lokal auf xampp, MySQL-Client-Version: 5.0.51.

Kind regards

--
I have a Dream...
Bugs erzeugen gegenbugs.
Wir müssen Bugs mit Bugs bekämpfen!
  1. Ich weiss nicht mal, wie ich das beschreiben soll -- Ich versuchs mal:

    Versuch misslungen, nochmal bitte. Aber ich rate mal:

    Ich hab ein Feld Namens Inhalt, in diesem habe ich zum testen <?php echo 'test'; ?> eingefügt

    Ein Datenbankfeld?

    wenn ich das jetzt im Browser aufrufe steht im Quelltext <?php echo 'test'; ?>, wie stelle ich es an, dass echo nur test ausgibt?

    Du möchtest in einer DB hinterlegten PHP-Code ausführen? Dann überdenke das Datenbankdesign, es ist Scheiße.

    Mir geht es darum, beispielsweise die <title>$my_title</title> Dynamisch zu verändern, und was sonst so anfällt.

    Templates.

    ~JJ

    1. hi,

      Danke, das wars!

      Kind regards

      --
      I have a Dream...
      Bugs erzeugen gegenbugs.
      Wir müssen Bugs mit Bugs bekämpfen!
    2. Hi Jaroslav!

      [...] es ist Scheiße.

      Ist etwas scheiße, dann ist es beschissen.
       Ist etwas Scheiße, dann schmeckt es beschissen.
      Isst etwas scheiße, dann isst es beschissen.
        Isst man Scheiße, wurde man beschissen.

      ;-)

      MfG H☼psel

      --
      "It's amazing I won. I was running against peace, prosperity, and incumbency."
      George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
      Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    3. hi,

      Du möchtest in einer DB hinterlegten PHP-Code ausführen? Dann überdenke das Datenbankdesign, es ist Scheiße.

      Nicht halb so beschissen wie dein supertoller Tip. Ein einfaches str_replace hätte mir geholfen und mir ein Paar Stunden gespart, aber lieber irgendeinen Seiss schreiben, hauptsache mit gekackt, Super, Toll, hast du fein gemacht ...

      --
      I have a Dream...
      Bugs erzeugen gegenbugs.
      Wir müssen Bugs mit Bugs bekämpfen!
      1. Du möchtest in einer DB hinterlegten PHP-Code ausführen? Dann überdenke das Datenbankdesign, es ist Scheiße.
        Nicht halb so beschissen wie dein supertoller Tip.

        Welcher Tipp?

        Ein einfaches str_replace hätte mir geholfen und mir ein Paar Stunden gespart

        Siehste, hast es doch gefunden, acuh ohne meinen supertollen Tip.

        aber lieber irgendeinen Seiss schreiben

        Mehr war nicht drin bei deiner mehr als dünnen Problembeschreibung. Ihr findet doch alle eure Charta hier so toll, dass ihr alle naselang drauf verlinkt. Und du bist ja hier auch sowas wie ein Stammuser, also halte dich gottverdammt an deine Regeln! Und wenn du das nicht tust, dann wundere dich nicht über eine Antwort, die nicht deinen Vorstellunegn entspricht. Ich abe dir geschrieben, dass ich bei deiner Beschreibung nur raten kann. Wer lesen kann und so...

        hauptsache mit gekackt, Super, Toll, hast du fein gemacht ...

        Glashaus, steine und so.

        1. hi,

          Nicht halb so beschissen wie dein supertoller Tip.
          Welcher Tipp?

          Du möchtest in einer DB hinterlegten PHP-Code ausführen? Dann überdenke das Datenbankdesign, es ist Scheiße.

          ----------

          Siehste, hast es doch gefunden, acuh ohne meinen supertollen Tip.

          Darum geht es hier wohl nicht wirklich, ich habe die richtung gefunden, fertig bin ich noch lange nicht.

          Mehr war nicht drin bei deiner mehr als dünnen Problembeschreibung. Ihr findet doch alle eure Charta hier so toll, dass ihr alle naselang drauf verlinkt. Und du bist ja hier auch sowas wie ein Stammuser, also halte dich gottverdammt an deine Regeln!

          Du hast die frage richtig verstanden, ich möchte im DB hinterlegten Text PHP Code ausführen, ich hatte die Formulierung nur nicht hingekriegt.

          Kind regards

          --
          I have a Dream...
          Bugs erzeugen gegenbugs.
          Wir müssen Bugs mit Bugs bekämpfen!
          1. Hallo Malcolm,

            Du hast die frage richtig verstanden, ich möchte im DB hinterlegten Text PHP Code ausführen,

            das halte ich für eine extrem schlechte Idee.

            Freundliche Grüße

            Vinzenz

            1. hi Vinzenz,

              Du hast die frage richtig verstanden, ich möchte im DB hinterlegten Text PHP Code ausführen,
              das halte ich für eine extrem schlechte Idee.

              Eigentlich möchte ich nur eine Funktion aufrufen, wie könnte ich das anstellen?

              Normalerweise habe ich in meinen Textdateien stehen,

              myVideo("startcontainer","200","180","player","intro-1.flv","intro-new.jpg");

              Hier übergebe ich einer Funktion ein Paar Werte, aus denen dann ein Video zusammengebaut wird (erspart mir rund 20 Zeilen HTML), wie kann ich das machen, wenn meine Daten aus einer Datenbank kommen?

              Gestern kam ich auf die Idee, dass mit BBCode zu realisieren, ist aber auch nicht das Gelbe vom Ei bzw. da bin ich auch noch nicht durchgestiegen, wie dass funktionieren soll.

              Kind regards

              --
              I have a Dream...
              Bugs erzeugen gegenbugs.
              Wir müssen Bugs mit Bugs bekämpfen!
          2. Du möchtest in einer DB hinterlegten PHP-Code ausführen? Dann überdenke das Datenbankdesign, es ist Scheiße.


            Der Schuß ins Blaue saß, ficht dich das an? Sorry, aber dann bist du in der falschen Branche.

            Du hast die frage richtig verstanden, ich möchte im DB hinterlegten Text PHP Code ausführen, ich hatte die Formulierung nur nicht hingekriegt.

            Ich habs immer noch nicht kapiert, was steht denn in der DB? Der Code? Dann bleine ich dabei, daß dein Design scheiße ist, nimms hin und lies weiter oder schmeiß weiter mit Dreck nach mir, das ist mir egal.

            Also: beschäftige dich zuallererst mit dem Schichtenmodell (http://de.wikipedia.org/wiki/Schichtenmodell). Das, was ich bemängele ist die fehlende Abstraktion zwischen Datenhaltungs- und Verarbeitungsschicht, evtl. mischst du auch noch ein bißchen Präsentationsschicht rein.

            Die Datenhaltungsschicht weiß nichts von der Verarbeitungsschicht, sie muß ihr auf gut deutsch scheißegal sein. Ihre einzige Aufgabe ist, die Daten, die einer Software zugrundeliegen, zu speichern. Das ganze nach den allgemeingültigen Regeln, verwendest du ein DBMS, wäre bspw. oberste Regel Normalisierung. Was auf keinen Fall eine Rolle spielen darf ist, wie die Verarbeitungsschicht (in deinem Fall ja wohl PHP) funktioniert. Die Datenhaltungsschicht muß so abstrahiert aufgebaut sein, daß jede Art von Verarbeitungsschicht damit umgehen kann. Wenn in deiner DB sowas wie "echo 'test'" steht, dann wird dir eine auf JAVA basierende Verarbeitungsschicht einen Vogel zeigen. Deshalb ist eine DB-Design, das auszuführenden Code enthält, Blödsinn.

            So, jetzt habe ich aber genug geschissen, mach mit den Infos was du willst, aber jammer nicht irgendwann rum, daß du`s nicht gewußt hast. Spätestens, wenn echo in PHP 7.x nicht mehr das tut, was du erwartest, wird dir dein DB-Design um die Ohren fliegen.

            Und eine Entschuldigung für deine verbalen Ausfälle erwarte ich nicht wirklich...

            ~JJ

            1. hi,

              Du möchtest in einer DB hinterlegten PHP-Code ausführen? Dann überdenke das Datenbankdesign, es ist Scheiße.
              Der Schuß ins Blaue saß, ficht dich das an? Sorry, aber dann bist du in der falschen Branche.

              Du hättest einen Grund schreiben können, warum. Ein in den Raum geschmissenes "was du da machst ist Scheisse" kommt selten an.

              Ich habs immer noch nicht kapiert, was steht denn in der DB? Der Code? Dann bleine ich dabei, daß dein Design scheiße ist,

              Dann gehe ich mal ins Detail, von dem, was ich möchte, (Generell geht es um ein kleines CMS für mich).

              Ich habe Zwei Funktionen, die eine baut aus ein Paar Werten rund 20 Zeilen HTML für das einblenden eines Videos zusammen:
              myVideo("VideoId","200","180","player","intro-1.flv","intro-new.jpg");
               ergibt: 20 Zeilen HTML, <embed> und ein wenig Javascript

              Die zweite Funktion baut aus den angegebenen Werten eine Bildbox zusammen
              myPics("ALT-Text", "Beschreibung", "/images/bild.jpg", "/images/thumbs/bild.jpg");
              ergibt: <div><p> mit Text in </p> <img />

              Muss ich das jetzt alles in der Datenbank hart kodieren?

              Also: beschäftige dich zuallererst mit dem Schichtenmodell (http://de.wikipedia.org/wiki/Schichtenmodell). Das, was ich bemängele ist die fehlende Abstraktion zwischen Datenhaltungs- und Verarbeitungsschicht, evtl. mischst du auch noch ein bißchen Präsentationsschicht rein.

              Das leuchtet ja ein, mir wäre ja auch eine Alternative recht, da gibt es doch sicherlich irgendwas, um mein vorhaben zu realisieren.

              verwendest du ein DBMS, wäre bspw. oberste Regel Normalisierung. Was auf keinen Fall eine Rolle spielen darf ist, wie die Verarbeitungsschicht (in deinem Fall ja wohl PHP) funktioniert.

              Normalisiert habe ich schon, mir geht es nur um die Funktionen.

              Kind regards

              --
              I have a Dream...
              Bugs erzeugen gegenbugs.
              Wir müssen Bugs mit Bugs bekämpfen!
              1. Hallo Malcolm,

                Dann gehe ich mal ins Detail, von dem, was ich möchte, (Generell geht es um ein kleines CMS für mich).

                Ich habe Zwei Funktionen, die eine baut aus ein Paar Werten rund 20 Zeilen HTML für das einblenden eines Videos zusammen:
                myVideo("VideoId","200","180","player","intro-1.flv","intro-new.jpg");
                ergibt: 20 Zeilen HTML, <embed> und ein wenig Javascript

                Die zweite Funktion baut aus den angegebenen Werten eine Bildbox zusammen
                myPics("ALT-Text", "Beschreibung", "/images/bild.jpg", "/images/thumbs/bild.jpg");
                ergibt: <div><p> mit Text in </p> <img />

                Muss ich das jetzt alles in der Datenbank hart kodieren?

                Nein. Der Kram hat in der Datenbank überhaupt nichts verloren. Das ist Präsentation. Das bleibt in Funktionen/Methoden.

                Also: beschäftige dich zuallererst mit dem Schichtenmodell (http://de.wikipedia.org/wiki/Schichtenmodell). Das, was ich bemängele ist die fehlende Abstraktion zwischen Datenhaltungs- und Verarbeitungsschicht, evtl. mischst du auch noch ein bißchen Präsentationsschicht rein.

                Normalisiert habe ich schon, mir geht es nur um die Funktionen.

                Wie soll ich's erklären? Wo fange ich an? Vielleicht ein Beispiel, das dem ähnelt, was Deine Funktionen andeuten.

                In einem Projekt benötige ich

                - eine (paginierte) Galerie mit Bildern und Detailangaben zu jedem Bild.
                   Code:

                  
                        # Erzeuge eine neue Galerie ohne Einschränkungen  
                        $gallery    = new PictureList();  
                        # Erzeuge HTML-Code für die Paginierung, wenn erforderlich  
                        $pagination = $gallery -> getPagination();  
                        # Erzeuge den HTML-Code für die Galerie  
                        $pictures   = $gallery  -> getPictureList();  
                
                

                - die Möglichkeit, die Anzeige mit Suchkriterien in den Detailangaben
                   einzuschränken.
                   Code:

                  
                        # Erzeuge eine neue Galerie mit einem Einschränkungskriterium  
                        $gallery    = new PictureList($search);  
                        # Erzeuge HTML-Code für die Paginierung, wenn erforderlich  
                        $pagination = $gallery -> getPagination();  
                        # Erzeuge den HTML-Code für die Galerie  
                        $pictures   = $gallery -> getPictureList();  
                
                

                - ein Zufallsbild mit Detailangaben zum Bild.
                   Code:

                  
                        # Erzeuge eine neue Galerie mit einem Zufallsbild  
                        $gallery  = new PictureList(NULL, true);  
                        # Bei einem Einzelbild ist keine Paginierung erforderlich  
                        # Erzeuge den HTML-Code für das Zufallsbild  
                        $pictures = $gallery -> getPictureList();  
                
                

                Huch! Wo sehe ich, dass ich eine Datenbank benutze? Gar nicht! Dabei ist es doch der Fall, aber an dieser Stelle ist das völlig irrelevant.

                Die zugrundeliegenden Daten ziehe ich mir mit einem cleveren SQL-Statement aus diversen Tabellen meiner Datenbank, die ich sowieso auch noch für ganz andere Zwecke benötige. Dieses Statement wird von einer Methode gemäß den Anforderungen zusammengebaut. Eine Methode einer anderen Klasse nimmt dieses Statement entgegen und liefert das Abfrageergebnis als hübsches Array zurück. Irgendwelches HTML, CSS, Javascript oder gar PHP ist in keiner der Tabellen zu finden - und auch nicht im Abfrageergebnis.

                Eine weitere baut ähnlich Deiner myPics-Funktion aus diesem Array ein einzelnes Bild/Beschreibungsobjekt zusammen, eine weitere sorgt nötigenfalls dafür diese in eine Liste zu packen und die Paginierung zu erstellen mit dem ein oder anderen Effekt, den die modernen Javascript-Frameworks bieten, mit Nutzung der Google-Maps-API ... Dazu laden diese Methoden diverse Templates und ersetzen darin (mit str_replace()) Platzhalter durch Werte, die mittels der Verarbeitungslogik der Methoden gewonnen werden. HTML findet sich ausschließlich in den Template-Dateien, die somit auch ohne Ersetzungen schon funktionsfähig sind.

                Diese Methoden interessieren sich jedoch überhaupt nicht dafür, woher dieses Array kommt, es könnte genausogut hartcodiert sein, aus einer CSV- oder einer XML-Datei stammen. Das ist für die weitere Verarbeitung völlig unwichtig.

                Füge ich den Daten - auf welchem Weg auch immer - einen neuen Datensatz hinzu, so werden diese Daten genau dort angezeigt, wo sie hingehören, ohne dass ich irgendwelche Änderungen in meinem Code vornehmen müsste.

                Zusammenfassend:
                Deine Funktion myPics() wird idealerweise genauso aussehen wie vorher, nur werden die Daten für die Funktionsparameter (direkt oder indirekt) aus einer Datenbankabfrage stammen. Wie dies konkret aussieht, das kannst nur Du wissen, da nur Du die Logik Deiner Anwendung kennst.

                Freundliche Grüße

                Vinzenz

                1. hi Vinzenz,

                  erstmal vielen Dank für die Ausführliche erklärung.

                  Die zugrundeliegenden Daten ziehe ich mir mit einem cleveren SQL-Statement aus diversen Tabellen meiner Datenbank, die ich sowieso auch noch für ganz andere Zwecke benötige.

                  Daran hatte ich nicht gedacht, muss ich mir nur noch überlegen, wie dass aussehen könnte.

                  Eine weitere baut ähnlich Deiner myPics-Funktion aus diesem Array ein einzelnes Bild/Beschreibungsobjekt zusammen, eine weitere sorgt nötigenfalls dafür diese in eine Liste zu packen und die Paginierung zu erstellen

                  Also ist die Arbeit mit Datenbanken im Grunde ein Mix aus normalen Dateien (php, html usw.) und der Datenbank selbst?
                  Das habe ich dann wohl noch nicht verstanden, wenn dem so ist.

                  Deine Funktion myPics() wird idealerweise genauso aussehen wie vorher, nur werden die Daten für die Funktionsparameter (direkt oder indirekt) aus einer Datenbankabfrage stammen. Wie dies konkret aussieht, das kannst nur Du wissen, da nur Du die Logik Deiner Anwendung kennst.

                  Eine Logik habe ich noch nicht, ich frage mich auch grad, ob mein Datenbankdesign nicht übers Ziel hinausschiesst.

                  Macht es sinn, auch die Seiteninternen Links in der DB zu speichern?
                  Mein DB Design sieht derzeit so aus:

                  • Head
                            - Title, Metatags, Description, body id

                  • Menu
                            - Gruppe, Link, Linkname, Title

                  • Inhalt
                            - Text, Marginalien

                  Sollte ich den Abschnitt Menu besser über normale PHP-Dateien steuern?

                  Kind regards

                  --
                  I have a Dream...
                  Bugs erzeugen gegenbugs.
                  Wir müssen Bugs mit Bugs bekämpfen!
                  1. Hallo.

                    Eine Logik habe ich noch nicht, ich frage mich auch grad, ob mein Datenbankdesign nicht übers Ziel hinausschiesst.

                    Diese Frage wirst du nur selbst beantworten können, zumal niemand weiß, ob der hier vorgestellte Zweck der Anwendung auch längerfristig das Ziel bleibt oder ob und in welchem Maße du die Anwendung später ausbauen möchtest.

                    Macht es sinn, auch die Seiteninternen Links in der DB zu speichern?

                    Warum nicht?

                    Sollte ich den Abschnitt Menu besser über normale PHP-Dateien steuern?

                    Das ist doch eigentlich gar nicht die Frage. Natürlich werden sie mittels der Skripte gesteuert. Woher du dann die Inhalte holst, kannst du dir ja dann überlegen.
                    MfG, at

                    1. hi,

                      Diese Frage wirst du nur selbst beantworten können, zumal niemand weiß, ob der hier vorgestellte Zweck der Anwendung auch längerfristig das Ziel bleibt oder ob und in welchem Maße du die Anwendung später ausbauen möchtest.

                      Naja, ich mach alles Schritt für Schritt, ausbauen werde ich wohl immer, aber ich habe jetzt zumindest den richtigen Pfad gefunden.

                      Macht es sinn, auch die Seiteninternen Links in der DB zu speichern?
                      Warum nicht?

                      Das ist jetzt mein erstes CMS, ich bin mir nicht sicher, was in die DB gehört und was eben nicht.
                      Bilder gehören schonmal nicht in die Datenbank, ebenso das CSS und die Scripte, bei allen anderen Geschichten bin ich mir nicht sicher.
                      Aber ich denke ich werde die internen Links auch in die Datenbank packen, so brauche ich nur für die Datenbank Programmieren.

                      Kind regards

                      --
                      I have a Dream...
                      Bugs erzeugen gegenbugs.
                      Wir müssen Bugs mit Bugs bekämpfen!
                      1. Hallo.

                        Naja, ich mach alles Schritt für Schritt, ausbauen werde ich wohl immer, aber ich habe jetzt zumindest den richtigen Pfad gefunden.

                        Das ist gut.

                        Das ist jetzt mein erstes CMS, ich bin mir nicht sicher, was in die DB gehört und was eben nicht.

                        Bilder gehören schonmal nicht in die Datenbank, ebenso das CSS und die Scripte, bei allen anderen Geschichten bin ich mir nicht sicher.

                        Du solltest dir auch bei Bildern, CSS und Skripten nicht zu sicher sein. Es kann gute Gründe für deren Vorhalten in der Datenbank geben. Ausgenommen sind dabei natürlich im Allgemeinen die Skripte, die selbst auf die Datenbank zugreifen.

                        Aber ich denke ich werde die internen Links auch in die Datenbank packen, so brauche ich nur für die Datenbank Programmieren.

                        So kannst du vor allem später sehr sauber Änderungen durchführen, Statistiken erstellen etc.
                        MfG, at

                        1. hi,

                          Du solltest dir auch bei Bildern, CSS und Skripten nicht zu sicher sein. Es kann gute Gründe für deren Vorhalten in der Datenbank geben.

                          Stimmt, da hat auch EKKi gerade ein Stichwort in den Raum geschmissen, dass mit den Bildern muss ich mir mal anschauen, PHP-Skripte halte ich aber aus der Datenbank raus, dafür habe ich jetzt ein schönes Parser-Skript :)

                          So kannst du vor allem später sehr sauber Änderungen durchführen, Statistiken erstellen etc.

                          Die Verwaltung über die Datenbank erleichtert einiges, vorallem der Zugriff auf die Daten ist sehr einfach, ich freu mich schon auf das hoffentlich bald einsatzbereite CMS (sieht bis jetzt ganz gut aus).

                          Kind regards

                          --
                          I have a Dream...
                          Bugs erzeugen gegenbugs.
                          Wir müssen Bugs mit Bugs bekämpfen!
                      2. Mahlzeit Malcolm Beck´s,

                        Das ist jetzt mein erstes CMS, ich bin mir nicht sicher, was in die DB gehört und was eben nicht.

                        In eine Datenbank gehören Daten. Sonst nichts. :-)

                        Bilder gehören schonmal nicht in die Datenbank,

                        Nicht? Wieso nicht? Mittels BLOB wäre das kein Problem - schließlich sind Bilder auch irgendwie Daten ...

                        ebenso das CSS

                        CSS-Anweisungen könnte man auch als Daten ansehen. Schließlich sind sie statisch, können also beim Aufbau der Seite(n) einmal gelesen und integriert werden.

                        und die Scripte,

                        Welche Skripte?

                        bei allen anderen Geschichten bin ich mir nicht sicher.

                        Wenn Du alle Daten in der Datenbank hast, bleibt nur noch Programmcode übrige. Und der hat in einer Datenbank absolut nichts zu suchen (wenn man von Triggern usw. absieht).

                        Aber ich denke ich werde die internen Links auch in die Datenbank packen, so brauche ich nur für die Datenbank Programmieren.

                        Was auch immer Du damit meinst ...(?)

                        Abstrahiere! Unterscheide zwischen (Programm-)Code und Daten. Dann fällt Dir die Entscheidung leicht, was in die Datenbank gehört und das nicht.

                        MfG,
                        EKKi

                        --
                        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                        1. hi EKKi,

                          ich bin mir nicht sicher, was in die DB gehört und was eben nicht.
                          In eine Datenbank gehören Daten. Sonst nichts. :-)

                          Das hatte ich mir fast schon Gedacht :)

                          Nicht? Wieso nicht? Mittels BLOB wäre das kein Problem - schließlich sind Bilder auch irgendwie Daten ...

                          Ich hatte irgendwo gelesen, dass es wohl der Performance nicht entgegenkommt, über BLOB stand da Natürlich nichts, ich werde es mir mal ansehen.
                          Gibt es denn Performance-unterschiede zwischen Bildern in einer Datenbank und Bildern direkt auf dem Webspace?

                          CSS-Anweisungen könnte man auch als Daten ansehen. Schließlich sind sie statisch, können also beim Aufbau der Seite(n) einmal gelesen und integriert werden.

                          Ja, dass wäre auch eine Überlegung, ich bleib aber wohl beim Klassischen CSS in einem Verzeichnis, da komm ich am besten mit klar.

                          Welche Skripte?

                          Programme, PHP-Skripte zum Beispiel.

                          Aber ich denke ich werde die internen Links auch in die Datenbank packen,
                          Was auch immer Du damit meinst ...(?)

                          Die Seiten-Internen Links, mit denen ich die Seiten untereinander verknüpfe.

                          Abstrahiere! Unterscheide zwischen (Programm-)Code und Daten. Dann fällt Dir die Entscheidung leicht, was in die Datenbank gehört und das nicht.

                          Danke für den Tipp, dass klingt Logisch  :)

                          Kind regards

                          --
                          I have a Dream...
                          Bugs erzeugen gegenbugs.
                          Wir müssen Bugs mit Bugs bekämpfen!
                          1. Hallo.

                            Gibt es denn Performance-unterschiede zwischen Bildern in einer Datenbank und Bildern direkt auf dem Webspace?

                            Irgendwelche Unterschiede gibt es immer. In deinem Fall würde ich aber eher auf die Erfahrung der DBMS-Entwickler setzen als auf deine eigenen Kenntnisse und Fähigkeiten zur Optimierung von Dateizugriffen.
                            Zu bedenken ist sicher auch, dass die meisten DBMS nicht tatsächlich die Bilder in die von dir gewünschte Tabelle setzen, sondern das BLOB von sich aus auslagern. Was ansonsten geschehen würde, kannst du dir sicher leicht ausmalen, wenn du dir vorstellst, eine DVD-Datenbank einschließlich der jeweiligen Images aufzubauen.
                            Das Interessante an einem BLOB ist ja nicht, dass die Daten nicht irgendwo im Dateisystem liegen, sondern dass du wie gewohnt mittels der Funktionen des DBMS auf sie zugreifen kannst.

                            Welche Skripte?
                            Programme, PHP-Skripte zum Beispiel.

                            Bei client-seitigen Skripten sähe das schon ganz anders aus.
                            MfG, at

                            1. hi,

                              Das Interessante an einem BLOB ist ja nicht, dass die Daten nicht irgendwo im Dateisystem liegen, sondern dass du wie gewohnt mittels der Funktionen des DBMS auf sie zugreifen kannst.

                              Ich sehe schon, mein kleines CMS wird doch nicht so klein, wie ich gedacht hätte.
                              Ich werde mal versuchen, fast alles in die Datenbank zu bekommen, die Angst vor Performance-schwächen habt ihr mir schon mal genommen.

                              mfg

                  2. Also ist die Arbeit mit Datenbanken im Grunde ein Mix aus normalen Dateien (php, html usw.) und der Datenbank selbst?

                    Eine Datnbank ist erstmal nur er Vorratsschrank einer Software, was du mit den Daten machen willst (soz. der Zweck der Software) spielt eine Rolle dabei, wie du deinen Vorratsschrank einräumst. PHP ist dein Kochtopf, hat also nichts im Vorratsschrank zu suchen. Genausogut kannst du auch statt einem PHP-Kochtopf eine JAVA-Pfanne oder einen Python-Backofen nehmen, die haben auch nix im Vorratsschrank zu suchen.

                    Macht es sinn, auch die Seiteninternen Links in der DB zu speichern?

                    Es spricht nichts dagegen.

                    Mein DB Design sieht derzeit so aus:

                    Sind das die Tabellen?

                    Sollte ich den Abschnitt Menu besser über normale PHP-Dateien steuern?

                    Aus einem Apfel kann man einen Bratapfel oder Apfelmus machen, Ausgangspunkt ist immer der rohe Apfel. Leg dir also einen Apfel in deinen Vorratsschrank. Gerade bei Menüs ist es besser, die irgendwo zentral zu haben, und wenn du schon ein DBMS drunterlegst, dann bitte auch dort.

                    ~JJ

                    1. hi,

                      Mein DB Design sieht derzeit so aus:
                      Sind das die Tabellen?

                      Auf xampp habe ich eine Datenbank, „myhomepage (3)“.

                      Diese hat 3 Tabellen

                      Tabelle - Felder

                      • Head
                                 - Title, Metatags, Description, body id

                      • Menu
                                 - Gruppe, Link, Linkname, Title

                      • Inhalt
                                 - Text, Marginalien

                      Die Tabellen sind natürlich untereinander verknüpft.

                      Gerade bei Menüs ist es besser, die irgendwo zentral zu haben, und wenn du schon ein DBMS drunterlegst, dann bitte auch dort.

                      Ich hab noch Schwierigkeiten mit dem Anzeigen des Menus, da ich ein Verschachteltes Menu in der Form

                      Begriff_1
                                 - Link1
                                 - Link2
                                 - Link3
                      Begriff_2
                      Begriff_3
                      Begriff_4

                      vorliegen habe, Blicke ich durch die Programmierung nicht durch, bzw. weiss ich nicht, wie ich das realisieren soll.

                      Kind regards

                      --
                      I have a Dream...
                      Bugs erzeugen gegenbugs.
                      Wir müssen Bugs mit Bugs bekämpfen!
                      1. Tabelle - Felder

                        • Head
                                   - Title, Metatags, Description, body id

                        • Menu
                                   - Gruppe, Link, Linkname, Title

                        • Inhalt
                                   - Text, Marginalien
                          Die Tabellen sind natürlich untereinander verknüpft.

                        Evtl. meinst du es ja so, wie ich es machen würde (grobes Raster)
                        Tabelle Meta:
                        page-ID | name | title | css | js | ...

                        Tabelle Content:
                        page-ID | type | content

                        Einen komplexen Aufbau, bei dir sicher eher der overhead, aber zum gucken allemal gut, gibt`s hier zu sehen: http://www.adventure-php-framework.org/CMS_Database_Schema.PNG

                        Gerade bei Menüs ist es besser, die irgendwo zentral zu haben, und wenn du schon ein DBMS drunterlegst, dann bitte auch dort.
                        Ich hab noch Schwierigkeiten mit dem Anzeigen des Menus, da ich ein Verschachteltes Menu in der Form
                        vorliegen habe

                        Zum Abbilden und komfortablen Verwalten verschachtelter Baumstrukturen (wie Menüs) bieten sich nested sets an: http://www.klempert.de/nested_sets/

                        ~JJ

                        1. hi,

                          Evtl. meinst du es ja so, wie ich es machen würde (grobes Raster)
                          Tabelle Meta:
                          page-ID | name | title | css | js | ...

                          Tabelle Content:
                          page-ID | type | content

                          Ja, so ähnlich hab ich es, nur ich hatte die ID in meiner Beschreibung hier nicht angegeben, in meiner Datenbank sind die IDs auch drin.

                          http://www.adventure-php-framework.org/CMS_Database_Schema.PNG

                          Das sieht ja schon deftig aus, wie schnell ist sowas geparst? Ich hab ja schon bedenken bei 4-5 Tabellen ... Aber schön mal zu sehen, wie man sowas richtig angeht und was da alles dazu gehört, hätte ich nicht gedacht.

                          Zum Abbilden und komfortablen Verwalten verschachtelter Baumstrukturen (wie Menüs) bieten sich nested sets an: http://www.klempert.de/nested_sets/

                          Sowas habe ich gesucht, das werde ich als nächstes durcharbeiten.

                          Danke für die Hilfe.

                          Kind regards

                          --
                          I have a Dream...
                          Bugs erzeugen gegenbugs.
                          Wir müssen Bugs mit Bugs bekämpfen!
                          1. Hallo.

                            Das sieht ja schon deftig aus, wie schnell ist sowas geparst?

                            Schnell. Wenn du andere Programmabläufe visualisierst, ist das Ergebnis ja ähnlich kompliziert. Für ein DBMS ist das aber nichts besonderes.
                            MfG, at

                2. hi Vinzenz,

                  Deine Funktion myPics() wird idealerweise genauso aussehen wie vorher, nur werden die Daten für die Funktionsparameter (direkt oder indirekt) aus einer Datenbankabfrage stammen. Wie dies konkret aussieht, das kannst nur Du wissen, da nur Du die Logik Deiner Anwendung kennst.

                  Danke, dass hat mir weitergeholfen, preg_replace_callback() war das Zauberwort, die Funktion sieht noch fast gleich aus, nur ganz kleine änderungen musste ich vornehmen.

                  Kind regards

                  --
                  I have a Dream...
                  Bugs erzeugen gegenbugs.
                  Wir müssen Bugs mit Bugs bekämpfen!