Nochmal PHP/MySQL-Frage :-)

Dieses Thema im Forum "Web-Know-how für die Homepage" wurde erstellt von Steffy, 9. August 2003.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Steffy

    Steffy Kbyte

    Registriert seit:
    5. Dezember 2001
    Beiträge:
    400
    Hallo Ihr Lieben!

    Ich hätte mal gerne wieder ein Problem! Und zwar möchte ich (man erinnert sich vielleicht an mein erstes Posting zu diesem Thema) ein Content-Management-System mit PHP und MySQL programmieren.

    Nun habe ich mich (auch dies ist im Erstposting nachlesbar) für folgendes Layout entschieden: drei Spalten (mit blinden Tabellen realisiert): links: generelles Menü, Mitte Haupttext, rechts Unterbereiche.

    Zum Beispiel wählt der Benutzer links "Musik" aus, und kann dann rechts auswählen unter "klassische Musik des 16. Jhdt", "Popmusik", "Klassik der Moderne" etc. ...

    Jetzt möchte ich aus Gründen der Flexibilität den gesamten Artikel in einem Feld abspeichern. Entscheidet sich der Benutzer nun für eine Subkategorie, so wird dieser Bereich "herausgetrennt" aus dem gesamten Artikel, und allein dargestellt.

    Sieht dann schematisch so aus:

    ---
    Artikel 08/15

    (section1)
    blablabliblablubb

    (section2)
    laberlaberschwall
    blubb laber

    (section3)
    seufz - ist das heiß

    (section4)
    ichhabdentextvergessen

    ---

    Nun entscheidet sich mein Besucher für (section2), also wird auch NUR "laberlaberschwall blubb laber" dargestellt. Wie schaffe ich es, diesen Bereich a) im TEXT-Feld meiner MySQL-Datenbank eindeutig zu kennzeichnen, und b) wieder zu extrahieren bei der Abfrage?

    Habe mir schon überlegt, dass das Ganze evtl. mit "explode" machbar wäre ... aber wie kriege ich die eindeutige Kodierung hin? Muß ich dazu ne eigene kleine Funktion ähnlich wie htmlentities() programmieren, die ein zufälliges Auftreten der Trennungs-Tags bemerkt und sie entsprechend in HTML-Zeichen kodiert?

    Hilfe! :-)

    Vielen Dank für Eure Hilfe. Ihr seid doch eh die Besten ;-)

    Liebe Grüße
    Steffi

    PS Lieben Dank für bereits erfolgte Hilfe. Hat praktisch alles so geklappt, wie ich es mir vorgestellt hatte. Auch das mit dem Menü, danke nochmal, Matthias :-)
     
  2. Steffy

    Steffy Kbyte

    Registriert seit:
    5. Dezember 2001
    Beiträge:
    400
    Hm danke.

    Allerdings plane ich nicht, die Teilseiten einzeln zu pflegen, sondern in einem großen Textfeld abzulegen und auch zu bearbeiten, damit es einfacher ist, ganze Absätze und Passagen zu kopieren, verschieben etc. ... aus diesem Grund müssen die Trenner auch im Fließtext bestehen bleiben ...

    Ich denke, das Problem wird sich nicht trivial lösen lassen - vielleicht ist es das einfachste, die Artikel-Autoren dazu anzuhalten, eben jenes Tag nicht zu verwenden ... :-)

    Gruß
    Steffi
     
  3. kalweit

    kalweit Hüter der Glaskugel

    Registriert seit:
    18. April 2000
    Beiträge:
    31.472
    explode soll schneller arbeiten, da es keine regulären Ausdrücke als Trenner verarbeiten kann. Wenn also der Trenner eindeutig ist, sollte man explode nehmen.

    Zum verhindern des Mißbrauchs sehe ich nur 2 Lösungen: zum einen ist die Seitenstruktur eines Artikels bereits vorgegeben, und jede Teilseite muss einzeln gepflegt werden. Hier ist ein zusätzlicher Seitentrenner nicht mehr notwendig und kann somit bei der Übernahme in die Datenbank aus der Benutzereingabe gelöscht werden. Zum Zweiten könnte man es mit einer Art Rechteverwaltung über das gesamte Dokument versuchen, in dem der Trenner nur ausgewertet oder verarbeitet wird, wenn der Benutzer die entsprechenden Rechte dazu hat. Bei allen übrigen wird der Trenner im Eingabefeld schlichtweg nicht angezeigt. Ich wäre eher für die erste Variante.

    Das mit dem Seitentitel kann man so machen, bei hohem Traffic sind aber reguläre Ausdrücke immer problematisch. Man könnte diese Titel und eventuell andere Daten einer Seite (z.b. Autor, Datum usw.) in einer Indexdatei unabhängig von der eigentlichen Seite festlegen und auswerten.

    Gruss, Matthias
     
  4. Steffy

    Steffy Kbyte

    Registriert seit:
    5. Dezember 2001
    Beiträge:
    400
    Hallo,

    danke für Deine Antwort.

    Wie lautet der geeignete Befehl für\'s "splitten": "split" oder "explode"?

    Und wie umgehe ich, daß ein Nutzer genau diesen "Trennstring" wie z.B. "<nextpage>" im Text verwendet und damit mein ganzes Layout durcheinanderwirbelt?

    Ich würde auch gerne eine nähere Beschreibung für jeden Unterartikel miteinfügen - das mache ich wahrscheinlich am besten über nen regulären Ausdruck, oder? Kann ja etwas wie <nextpage title="laberlaber"> schreiben, und das dann raussuchen lassen ...

    Gruß
    Steffi
     
  5. kalweit

    kalweit Hüter der Glaskugel

    Registriert seit:
    18. April 2000
    Beiträge:
    31.472
    Du fügst in den Gesamttext an den gewünschten Stellen eigene Trennzeichen ein. Ich mach sowas in der Art: %nächsteSeite%. Bei der Ausgabe liest du den kompletten Inhalt der Seite aus der Datenbank in einen String. Diesen kannst du nun anhand des Trennzeichens "splitten" und die erhälst ein Array mit seite[0]=blablub usw.

    Gruss, Matthias
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen