Anzahl von DB-Einträgen raussuchen, geht das einfacher?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Anzahl von DB-Einträgen raussuchen, geht das einfacher?

    Hallo,
    ich versuche mich grade an einem News-Script. Das mit speichern, auslesen, bearbeiten, löschen und anzeigen der News-Beiträge klappt bereits super. Jetzt möchte ich den Besuchern der Seite ermöglichen Kommentare zu den einzelnen News-Beiträgen abgeben zu können. Meine Frage bezieht sich dabei auf die Erfassung der Daten zum darstellen.
    Ich habe eine MySQL-Tabelle mit den News-Beiträgen, dort erhält jeder News-Beitrag eine eindeutige ID (fortlaufende Nummer). Für die Kommentare habe ich eine weitere Tabelle angelegt, auch hier erhält jeder Kommentar eine eindeutige ID, in einer weiteren Spalte wird die ID des News-Beitrags abgelegt, zu der dieser Kommentar gehört. Möchte ich nun alle Kommentare zu einem bestimmten News-Beitrag anzeigen, kann ich einfach die MySQL Elemente mit 'WHERE NewsID = '.$NewsID raus suchen (vielleicht noch nach Datum sortiert) und für die Anzeige weiter verarbeiten.
    So weit so gut. Das ist zwar noch nicht komplett umgesetzt, aber das traue ich mir soweit schon zu.
    Meine Frage gilt jetzt der News-Übersicht. Da wo nur alle News-Beiträge untereinander stehen. Dort werden ja die einzelnen Kommentare nicht mit angezeigt. Allerdings würde ich gerne unter jedem News-Beitrag stehen haben, wie viele Kommentare dazu denn existieren. Die Frage ist: Wie komme ich an die Anzahl der Kommentare. Meine Idee war, die komplette Kommentar-Tabelle auszulesen, sortiert nach zugehöriger News-ID, und in einen Array zu schreiben. Diesen Array dann mit einer for each schleife durchwandern, und die Einträge pro NewsID zählen. Das würde mit ziemlicher Sicherheit funktionieren. Aber irgendwas in mir sagt mir, dass das doch auch einfacher gehen muss.

    Lange rede Kurz: Wie finde ich möglichst simpel heraus, wie viele Elemente eines bestimmten Wertes in einer bestimmten Spalte einer MySQL-Tabelle liegen?

    Gruß

    Look
  • Schaue dir dazu am besten die Funktion count(*) an.
    Beispiel:

    Quellcode

    1. Select count(*) as kommentar_anzahl from comments where news_id = '1'


    Zudem damit du diese Query nicht ständig aufrufen musst gibt es noch die join-Funtion.

    Beispiel:


    Quellcode

    1. Select news.*, count(comments.id) as kommentar_anzahl
    2. from news
    3. INNER JOIN news_comments
    4. ON (news_comments.id= news.id)
    5. where news.news_id = '1'



    Kann sein, dass da jetzt was falsch ist oder oder oder .. Aber es verdeutlicht das was du brauchst. :P
  • Heißt also die MySQL Datenbank sagt mir direkt wie viele Elemente das sind? Das is ja praktisch :)
    Ich war jetzt iwie davon ausgegangen, dass ich die Elemente erst in mein PHP-Script laden muss, und dann dort iwie raus finde wie viele das sind.
    Aber so is das ja richtig bequem... mal sehen, vielleicht kann ich das ganz passabel als Funktion einbauen und dann für diverse andere Sachen gleich mit missbrauchen :)

    Danke!