sup: Newsscript: per SQL oder Filesystem?

Hi.

Ich bin gerade dran, ein Newssystem per PHP zu programmieren. Dabei wurde mir klar, dass es im Prinzip nicht das ist, was ich suche.

Neue News werden bei mir durch ein html-Formular hinzugefügt. Jede News bekommt eine Datei, welche im Format 1.txt, 2.txt usw gespeichert werden. Um alles darzustellen, durchgehe ich eine for-Schleife rückwärts. Die aktuellste News hat die höchste Nummer (momentan 6.txt).
Wenn ich jetzt aber eine News, zum Bleistift die dritte, lösche, dann kann PHP die Datei 3.txt nicht finden, und gibt somit eine Fehlermeldung aus, die Datei wurde nicht gefunden.

Dann dachte ich, dass das Newsscript nur unter einer Bedingung mit einer SQL-Datenbank Sinn machen würde: Nämlich beim Löschen einer Zeile müssten die PRIMARY KEY Felder unterhalb der gelöschten Zeile automatisch um 1 erniedrigt werden. Ist das gegeben, dann ergeben alle PRIMARY KEY Felder untereinander eine Zahlenreihe ab 0 bis (bei mir momentan) 6.

Wie habe ihr euer (evtl existierendes) Newssystem realisiert. Per DB oder per Dateien?

euer sup

  1. Hi,

    Ich bin gerade dran, ein Newssystem per PHP zu programmieren. Dabei wurde mir klar, dass es im Prinzip nicht das ist, was ich suche.

    Warum prgrammierst du es dann? Wenn es nicht das ist was du suchts ;)

    Neue News werden bei mir durch ein html-Formular hinzugefügt. Jede News bekommt eine Datei, welche im Format 1.txt, 2.txt usw gespeichert werden. Um alles darzustellen, durchgehe ich eine for-Schleife rückwärts. Die aktuellste News hat die höchste Nummer (momentan 6.txt).

    Sehr schlechte Lösung!

    Wenn ich jetzt aber eine News, zum Bleistift die dritte, lösche, dann kann PHP die Datei 3.txt nicht finden, und gibt somit eine Fehlermeldung aus, die Datei wurde nicht gefunden.

    Ist klar. Du kannst aber (solltest aber eh lieber auf ne DB zurückgreifen) vor der Ausgabe überprüfen ob die Datei überhaupt vorhanden ist!

    Dann dachte ich, dass das Newsscript nur unter einer Bedingung mit einer SQL-Datenbank Sinn machen würde: Nämlich beim Löschen einer Zeile müssten die PRIMARY KEY Felder unterhalb der gelöschten Zeile automatisch um 1 erniedrigt werden. Ist das gegeben, dann ergeben alle PRIMARY KEY Felder untereinander eine Zahlenreihe ab 0 bis (bei mir momentan) 6.

    Ich kann nur MySQL, aber ich du hast trotzdem den falschen Denkansatz!
    Du musst ja nicht jede Nummer auslesen! Du kannst auch einfach ein Feld in der Tabelle machen mit nem Timestamp drin. Dann ließt du einfach alle Splaten nach Timestamp geordnet aus. Du solltest aus ner DB nie mit ner for-Schleife auslesen, damit machst du aus einer Anfrage für alle News eine Anfrage pro News.

    Wie habe ihr euer (evtl existierendes) Newssystem realisiert. Per DB oder per Dateien?

    Immer per DB!!! Es gibt zwar auch welche die auf TXT-Dateien basieren, das sind aber nur Ausweichlösungen falls keine DB zur verfügung steht! Datensätze von immer gleichem Format sollten (fast) immer in einer DB sein, deshalb heißt se ja auch DATEN-bank !!!

    mfg samy,

    1. Hi,

      Wie habe ihr euer (evtl existierendes) Newssystem realisiert. Per DB oder per Dateien?

      Immer per DB!!!

      die drei Ausrufezeichen ueberzeugen mich.

      Es gibt zwar auch welche die auf TXT-Dateien basieren, das sind aber nur Ausweichlösungen falls keine DB zur verfügung steht!

      Eine Textdatei ist auch eine Datenbank (Datenbasis). Ich vermute, dass Du ein DBS im Einsatz sehen moechtest, im speziellen wohl ein RDBMS.

      Datensätze von immer gleichem Format sollten (fast) immer in einer DB sein, deshalb heißt se ja auch DATEN-bank !!!

      Es gibt da zumindest ein Gegenargument. Was machst Du, wenn die Textdateien relativ gross sind, z.B. > 100 KB ?

      Gruss,
      Ludger

  2. Huhu sup

    Wie habe ihr euer (evtl existierendes) Newssystem realisiert. Per DB oder per Dateien?

    Wesentlich für ein Newssystem ist dass man den Veröffentlichungszeitraum steuern kann.

    Bei mir sehen die Daten (fast) immer wie folgt aus:

    • Datum der Nachricht
    • Überschrift
    • Text
    • Teaser (i.d.R. automatisch erzeugt)
    • Startdatum, ab wann die Nachricht angezeigt werden soll (optional)
    • Enddatum, ab wann die Nachricht nicht mehr gezeigt werden soll (optional)
    • Zusätzlich ggf. noch eine Spalte "an/aus" bzw. "Entwurf"/ "Freigegeben"
    • Ggf. noch eine Kategoriezuordnung als Auswahlkriterium z.B. produktspezifisch, benutzerspezifisch etc.
    • Ggf. Bildchen, Links etc.

    Das kann man auch mit Flatfiles machen.
    Um Relationen abzubilden ist aber eine "richtige" Datenbank besser geeignet.

    Also wie immer "it depends".

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday