Wie bekomme ich die 10 neuesten Nachrichten.

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wie bekomme ich die 10 neuesten Nachrichten.

    Hallo. Ich probier gerade einmal ein Forum zu erstellen. Soweit funktioniert auch alles, aber
    beim letzten scheitert ich nun irgendwie. Ich hoffe es ist nicht zuviel verlangt wenn ich nun
    hier frage, ob mir jemand weiterhelfen kann

    Also als Beispiel nun einmal nur mit 4 Tabellen und alles vereinfacht:

    - foruminsgesamt
    - themen1
    - themen2
    - detail1
    - detail2

    Die Tabelle: fouminsgesamt hat die Spalte: id in der dann in diesem Falle 1, 2 gespeichert ist.

    Die Tabellen: themen* haben die Spalten: t_id, thema
    Die Tabellen: detail* haben die Spaalten: d_id, t_id, nachricht, datum

    Somit wird z.B. ein Thema erstellt das die t_id = 1 hat und die Nachricht ansich
    wird mit z.b. d_id=1, t_id=1 in die Tabelle detail1 gespeichert.

    Nun möchte ich die letzten 10 aktuellen Beiträge auf alle Tabellen bezogen auslesen.

    Zuerst lese ich dann die Tabelle: fouminsgesamt in einen Array:
    .
    .
    while ($row = mysql_fetch_row($rs))
    {
    $zahlen[] = $row[0];
    }
    .
    .

    dann frage ich alle tabellen ab:

    for ($i=0; $i<count($zahlen); $i++) {
    $query = "SELECT * FROM themen$zahlen[$i] as tab1, detail$zahlen[$i] as tab2 ORDER BY tab2.datum DESC";

    das klappt noch alles wunderbar. aber wie kann ich das nun beschränken, das ich nur 10 Einträge habe?
    Wenn ich nun am ende noch ein LIMIT 10 setze, dann bekomme ich zwar nur 10 Einträge aber alle
    nur aus der datail1 tabelle.
    Gibt es dafür eine Lösung? Ich hoffe das hat überhaupt jemand verstanden, so seltsam wie das erklärt ist
    Vielen Dank schon einmal.

  • #2
    Also in deinem Forum wird ja bestimmt gespeichert wann eine Nachricht gesendet wurde (Geeignet dafür ist ein Timestamp [ date("U"); ])

    Dann musst du deiner SQL-Abfrage einfach "ORDER BY datums_zeile DESC LIMIT 0,10".

    Also z.B.:
    $rs = mysql_query("SELECT * FROM tabelle ORDER BY datums_zeile DESC LIMIT 0,10");
    Kaffi
    Errare humanum est

    W32.Schmalle.H@mm

    Kommentar


    • #3
      hallo,
      das hatte ich schon probiert. aber dann bekomme ich die ersten 10 von allen tabellen raus. also in diesem falle dann 20 ergebnisse.
      aber ich hätte gerne INSGESAMT die 10 neuesten einträge auf alle tabellen bezogen.

      Kommentar


      • #4
        Ich würde das sowieso ganz anders machen....

        Nimm eine Thementabelle statt mehrere...

        Wie soll das Forum den aufgebaut sein?
        Mehrere Kategorien wenn ich es richtig verstehe?

        Dann Tabelle "Themen" mit Feld "Kategorie_ID" und in jeder Kategorie nur die Themen mit der entsprechenden ID anzeigen.
        Kaffi
        Errare humanum est

        W32.Schmalle.H@mm

        Kommentar


        • #5
          danke.
          aber ich habe das ganze nun schon mit der struktur aufgebaut und es funktioniert ja auch alles
          bis auf das nun.

          aber ich mache es nun eben anderst und speicher über einen cronjob ab und zu die neusten 10 nachrichten in eine extra tabelle und kann dann nur die abfragen und erspar mir alles

          Kommentar

          Lädt...
          X