Letzten Eintrag (Datum) ausgeben im Thread

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

  • Letzten Eintrag (Datum) ausgeben im Thread

    Hallo zusammen,

    ich hab' mal wieder ein "dusseliges" Problem.
    Ihr habt mir zwar prima geholfen bei Lösung meiner Ausgabe der Antworten im Thread, aber jetzt komm' ich einfach nicht weiter bei der Ausgabe der letzten Antworten sortiert nach Datum zu einer bestimmten Frage.
    Meine DB-Struktur sieht wie folgt aus:

    id datum bezug_id
    1 xxxxx 0
    2 xxxxx 1
    3 xxxxx 0
    4 xxxxx 2

    def:
    id= Eintrag
    bezug_id= Antwort auf id

    ich weiß, dass es kein eleganter Weg zur Thread-Darstellung,
    aber jetzt steht das script einmal so und es funktioniert.
    Kann mir trotzdem jemand helfen, wie ich mir die letzten Einträge in Form des Datum anzeigen lassen kann.

    Vielen Dank im voraus
    Sly

    P.S.: Es gibt zwar schon einige Einträge mit diesem Thema, aber ich habe keine passende Lösung zu meinem Problem gefunden.
    Oder bin ich einfach nur blind.

  • #2
    SELECT id FROM tabelle ORDER BY datum DESC

    ..?

    CAT Music Files

    Kommentar


    • #3
      Das wäre die Lösung für die letzten Einträge oberster Kategorie, das funzt auch.
      Wenn ich jetzt aber mein Thread durchsuche möchte mit allen "Unterantworten" weiss ich nicht weiter.

      Kannst Du mir da helfen?

      Danke!! Sly

      Kommentar


      • #4
        Ich komme hier leider immer noch nicht weiter

        Ich habe jetzt das komplette Forum nach meinem Problem durchsucht, habe zwar auch einige Ansätze gefunden, aber immer noch keine Lösung für mein Problem.
        Ich habe jetzt die Datumspalte in sql auf timestamp() gesetzt, aber die Sortierfunktion im Thread funktioniert immer noch nicht.
        Ich weiss jetzt wirklich nicht mehr weiter.
        Ich bin zwar soweit, dass er mir den ganzen durchsucht, aber er gibt mir immer nur das Datum der obersten Kategorie aus.

        id datum(timestamp) bezug_id
        1 2002326154823 0
        2 2002408221228 1
        3 2002512113548 2

        ausgegeben als letzter Beitrag wird:

        2002408221228

        Kann mir denn jemand helfen?!
        Ich weiss, dass ist nervig - sorry!!!
        Aber ich bin am verzweifeln.

        Vielen DANK!!!!

        Kommentar


        • #5
          ähm ... hast du in deiner Query ein "where bezug_id=" stehen? oder "order by bezug_id, datum"?
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar


          • #6
            Also, bei mir steht momentan :

            "select datum from diskussion where bezug_id='" . $uebergabe ."' order by datum desc"

            Kommentar


            • #7
              Haaallloooooo nerv' ich ?!!

              Ich weiss, dass das mit Sicherheit Anfängerprobleme sind,
              aber ich würde so gerne weiterkommen, kann mir denn bitte jemand weiterhelfen?!

              Danke, Sly

              Kommentar


              • #8
                Du willst zu jeder bezug_id den letzten Eintrag?

                select * from Tabelle group by bezug_id order by datum desc

                oder

                select t1.* from Tabelle t1
                left join Tabelle t2 on t1.bezug_id=t2.bezug_id
                group by t2.bezug_id
                having t1.datum=max(t2.datum)

                beides nicht getestet, aber

                select * from Tabelle where datum=max(datum) group by bezug_id

                reicht nicht, da hier das max(datum) das letzte Datum überhaupt nimmt - unabhängig von der bezug_id.

                Möglicherweise muss auch mit zwei Queries gearbeitet werden oder mit einer Schleife ...
                mein Sport: mein Frühstück: meine Arbeit:

                Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                Kommentar


                • #9
                  Danke!! Ich versuch's erst mal so weiter.
                  Wenn's dann garnicht hinhaut, werd' ich mich "leider" nochmal melden.

                  Funktioniert das Ganze auch mit Php 3, ich hab leider nur die alte Version zur Verfügung.

                  Danke, Sly

                  Kommentar


                  • #10
                    Das funktioniert auch mit PHP/FI, worauf es ankommt ist die mySQL-Version; und auch die sollte egal sein.
                    Wenn es funktioniert, dann überall.
                    mein Sport: mein Frühstück: meine Arbeit:

                    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                    Kommentar


                    • #11
                      Dann dank' ich dir erstmal - hoffentlich nicht bis später!! ;-))

                      Kommentar


                      • #12
                        Sorry!!!
                        Mir ist gerade beim Ausprobieren deiner Hilfestellung ein Fehler meinerseits aufgefallen.

                        Im Prinzip brauche ich nicht die letzten Einträge der bezug_id, sondern der id.
                        Das sollte so ähnlich aussehen wie bei euch im Forum.
                        Ich kriege eine Frage und darauf x-Antworten.
                        Die dann in einer Baumstruktur anzeigt werden.
                        Jetzt möchte ich auf der Einstiegsseite zeigen, wann die letzte Antwort auf eine 1. Fragestellung gegeben wurde.


                        Ich habe das Ganze mit einer rekursiven Schleife versucht, aber das haut irgendwie nicht hin.
                        Ich habe mir den Durchlauf der Schleife einmal anzeigen lassen :

                        1 - 20020408000000 - 9
                        1 - 20020328000000 - 4
                        4 - 20020413000000 - 11
                        2 - 20020417000000 - 25
                        25 - 20020514000000 - 27
                        2 - 20020412000000 - 6
                        2 - 20020325000000 - 3
                        5 - 20020417000000 - 23
                        5 - 20020328000000 - 7
                        12 - 20020415000000 - 18
                        18 - 20020416000000 - 21

                        Die letzte Zahl ist die id der Antworten und die vordere Zahl die der Ausgangsfragestellung bzw. die der letzten Antwort auf die dann wieder geantwortet wurde.
                        Und jetzt möchte ich pro Fragestellung das Datum der letzten Antwort unabhängig davon die wievielte "Unterantwort" es ist.

                        Ich weiss dass es euch mit Sicherheit nervt, solche dusseligen Newbie Fragen zu beantworten, aber ihr seit die bisher einzigsten, die einem wenigstens Hilfestellung geben.
                        Ich habe zwar auch einige PHP und MYSQL-Bücher, aber
                        irgendwie blickt ich da auch nicht immer durch, da ich ja auch garnicht weiss, nach welchem Befehl oder Funktion ich suchen muss.

                        Viiieeeeeelllllen Daaaannnkkkk!!!!!

                        Kommentar


                        • #13
                          Tjahaa ... logisch.
                          Ich gehe mal davon aus, dass die ersten Posts eines Topics die bezug_id=0 haben.
                          Dann kann man das rekursiv machen - ich hab´s aber mal iterativ implementiert:
                          PHP-Code:
                          // erste Posts holen
                          $post = array();
                          $q mysql_query("select id, titel, datum from Tabelle where bezug_id=0");
                          $get = array();
                          while (
                          $x mysql_fetch_assoc($q))
                          {
                            
                          $datum = array();
                            
                          $get = array($x['id']);
                            
                          // jetzt "rekursiv" _alle_ Antworten auf den Post holen
                            // und ID und Datum der jeweils neuesten speichern:
                            
                          while (count($get))
                            {
                              
                          $q2 mysql_query("select id, datum from Tabelle where bezug_id in ("
                                
                          implode(','$get). ") order by datum desc");
                              
                          $get = array(); // hier werden alle IDs zwischengespeichert
                              
                          for ($i=0$r mysql_fetch_row($q2); $i++)
                              {
                                
                          $get[] = $r[0];
                                if (!
                          $i && $r[1]>$x['last_datum'])
                                {
                                  
                          $x['last_datum'] = $r[1];
                                  
                          $x['last_id'] = $r[0];
                                }
                              }
                            }
                            
                          $post[] = $x;

                          Jetzt muss nur noch das Array $post mittels usort nach einem beliebigen Parameter sortiert werden und fertig.

                          Natürlich kannst du beliebige Daten aus dem ersten und letzten Post jedes Themas speichern.
                          mein Sport: mein Frühstück: meine Arbeit:

                          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                          Kommentar

                          Lädt...
                          X