![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Benutzer Registriert seit: 18.06.2006 Ort: Straubing
Beiträge: 85
|
Hallo zusammen ich möchte gerne folgendes Vorhaben realisieren! Ich habe 2 Tabellen in meiner Datenbank (_content und _templates). In der ersten Tabelle (_content) speichere ich die Inhalte der jeweiligen Daten wie folgt ab: Code: id => auto_increment
pageid => jeweilige Seiten-ID
template_id => id des Template (=> _templates)
content => ###markerName###, markerContent|*|
###markerName2###, markerContent2
Was das ganze bezwecken soll: Ich will jedem Content-Eintrag ein vorgefertigtem Template zuweißen. In diesem Template wurden Marker eingetragen, die durch den Code aus der Datenbank ersetzt werden sollen. (Ich hoffe man kann es verstehen) Bisher sieht der Code für das Script, das ich dafür habe aus wie folgt: PHP-Code: |
| | |
| | Nach oben #2 |
| Martin Eisengardt Registriert seit: 30.03.2006 Ort: Pfinztal
Beiträge: 355
|
Du hast doch an der Stelle nun schonmal die einzelnen Inhalte in einem Array. Ich würde sagen, du gehst Inhalt für Inhalt durch und zerlegst ihn in Marker und MarkerContent. Damit bewaffnet machst du ein strreplace auf dein Template und erhälst so nun ein neues "Template", dass um einen Inhalt bereichert wurde. Ganz am Schluss hast den endgültigen Inhalt. So, Rest ist Transferleistung.
__________________ Open Sourcing the Online Gaming Universe PHP/SQL/Java/C++/Assembler. Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html |
| | |
| | Nach oben #3 |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 687
|
Ich bin ja ein absoluter Freund der Normalform in Datenbanken. Diese besagt u.A., dass in einem Feld einer Tabelle niemals mehr als eine Information stehen darf. Entsprechend würde ich die Tabellen oben noch etwas ausweiten: _page id => auto_increment pageid => jeweilige Seiten-ID template_id => id des Template (=> _templates) _content id => auto_increment marker => ###markerName### content => markerContent Dann halt entsprechend in die Content-Tabelle mehrere Zeilen reinschreiben. Ist von der Datenbank her deutlich sauberer und lässt sich meiner Meinung nach auch einfacher administrieren.
__________________ Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
| | |
| | Nach oben #5 |
| Benutzer Registriert seit: 18.06.2006 Ort: Straubing
Beiträge: 85
|
EDIT: Problem gelöst. Ich hätte nur noch eventuell eine Frage, was ich besser machen kann?! Hier der Code: PHP-Code: Geändert von Berti (31.08.2007 um 10:13 Uhr) |
| | |
| | Nach oben #6 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 853
|
Hi. - Den Default-Wert für das Content-Verzeichnis würde ich aus der Klasse verbannen und z.B. dem Konstruktor übergeben (bzw. diesem ein Config-Objekt mit der entsprechenden Info übergeben). - Den Konstruktor würde ich __construct() nennen. - Das & vor $singleton (1. Parameter des Konstruktors) kannst du dir sparen. - Singleton ist die Bezeichnung für ein klar definiertes Entwurfsmuster, das du hier ja nicht verwendest. Wähle daher besser einen anderen Namen. - BW_System::_db und …::_deb sind nicht deklariert. - BW_System::pageid ist public, daher prüfen, bevor du es in eine DB-Query schreibst. - Das * in der SELECT-Query solltest du durch die Liste der Spalten ersetzen. Siehe hierzu den Punkt in der dclp-FAQ. - Bei der DB-Klasse würde ich als Ergebnis einer Query ein Objekt zurückgeben, aus dem du dann auch num_rows ziehen kannst. Diese direkt aus dem DB-Objekt zu beziehen ist fehleranfällig. Methoden würde ich auch immer mit einem Verb versehen: getNumRows() oder so. - Anstatt der for-Schleife (über die Ergebnisliste der DB-Abfrage) kannst du auch gleich eine while-Schleife mit Zuweisung benutzen. - Dein Datenformat für die Werte, die ins Template kommen scheint mir sehr wackelig zu sein. Was, wenn diese Klammern, Semikolon, Doppelpunkte oder drei Doppelkreuze in Folge enthalten? Warum verwendest du nicht csv oder serialize()? (Abgesehen vom genannten Punkt der Normalisierung) - Schau dir mal file_get_contents() an. Soweit mal, was mir gerade so ins Auge springt. Basti |
| | |
| | Nach oben #7 |
| Martin Eisengardt Registriert seit: 30.03.2006 Ort: Pfinztal
Beiträge: 355
|
*hust* Die Vorschläge von Basti gehen davon aus, dass du PHP5 nutzt *hust* Wenn nicht *hust* installiere es prompt. *hust-ende* Ne, im Ernst. Da du private nutzt, nutzt du PHP5. Also in Zukunft Bastis Vorschläge befolgen und gleich einheitlich machen.
__________________ Open Sourcing the Online Gaming Universe PHP/SQL/Java/C++/Assembler. Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html |
| | |
| | Nach oben #8 |
| Erfahrener Benutzer Registriert seit: 31.12.2006 Ort: Zürich
Beiträge: 306
|
Klar nutzt er PHP5... Sonst würde es schon daran scheitern: "private function [...]"
__________________ . <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination. |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Hilfe benötigt... | arcor | Allgemeine Java-Programmierung | 6 | 25.01.2006 19:19 |
| Testdaten erzeugen | Robinson | Plauderecke | 3 | 11.12.2005 19:21 |
| Look and feel selbst erzeugen | alekz | Desktop-Applikationen und Grafik | 4 | 29.08.2005 13:20 |
| MySQL Tabellen erzeugen mit anschließendem inhalt | noxx | PHP-Programmierung | 3 | 13.04.2005 21:08 |
| MenuItem Action Listener automatisch erzeugen | `B | Desktop-Applikationen und Grafik | 5 | 24.02.2005 11:03 |