Sortieren von Daten aus Datenbank

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

  • Sortieren von Daten aus Datenbank

    Hallo zusammen,

    nachdem ich mich nun einige Tage, leider vergeblich, mit meinem Problem beschäftigt und auch schon diverse Foren durchsucht habe, muss ich mich wohl doch mal hilfesuchend an Euch wenden.

    Schilderung:

    Ich habe eine "Community" in der die User sich sogenannte "Telegramme" schreiben können, um miteinander zu kommunizieren. Diese Telegramme werden mit "vonuser", "anuser","inhalt","zeitpunkt" in eine datenbank geschrieben (auch alles einwandfrei).
    Nun möchte ich jedoch, dass sich die User, ihre jeweiligen Telegramm-Verläufe auch ansehen können, das heisst, dass die schon geschriebenen Telegramme aufgelistet werden sollen.
    Natürlich könnte man jetzt alle geschrieben und empfangenen Telegramme nach Usernamen sortiert untereinander auflisten, jedoch würde das ein zu grosses durcheinander verursachen.
    ich möchte hingegen, dass das Auslesen wie folgt geschieht:

    - Nur auslesen mit welchen Usern (Usernamen) ich schon geschrieben habe und wieviele Telegramme geschrieben wurden
    - Die Ausgabe dieses Auslesens soll durch erscheinen des jeweiligen Telegramm-Partners als Link erfolgen
    - Auflistung aller Gesprächspartner untereinander
    - Nach klicken auf diesen Link, soll dann zeitlich geordnet, der komplette Verlauf mit diesem user erscheinen.


    Leider bin ich an dieser Sache verzweifelt, da er mir bei dem Versuch, erstmal nur die Gesprächspartner auszulesen, alle gesprächspartner so oft untereinander auflistet, wie ich mit ihnen kommuniziert habe.

    Ich würde mich freuen, wenn sich einer (oder auch zwei?..+g+) meines Problems annehmen würde und mir hierbei ein wenig helfen könnte.

    MfG
    NetWorX

  • #2
    bis dahin ist es keine problembeschreibung, sonder ein "ein tag aus dem leben des."

    wenn du probleme mit einem sqlstatement hast, dann zeig mal die genau tabellenstruktur, einige beispieldaten und eine gewünschte ausgabeform. dann zeigst du deine eigenen versuche und ansätze zur problemlösung - und dir wird gern geholfen.

    Kommentar


    • #3
      benutze doch einfach bei dem select query ein "order by"
      Warum PHP .. wenn's auch mit Perl geht

      Kommentar


      • #4
        Aukai, dann mach ich des mal.

        Tabellenstruktur:

        PHP-Code:
        //Tabellstruktur des Tables Telegramme in welche die daten eingetragen werden
        CREATE TABLE `telegramme` (
          `
        idint(11unsigned NOT NULL auto_increment,
          `
        touservarchar(50NOT NULL default '',
          `
        fromuservarchar(50NOT NULL default '',
          `
        inhalttext NOT NULL,
          `
        createdvarchar(20NOT NULL default '',
          `
        isreadchar(3NOT NULL default 'no',
          `
        exttimetimestamp(14NOT NULL,
          
        PRIMARY KEY  (`id`)
        TYPE=MyISAM


        Ein paar test-einträge:

        PHP-Code:
        //Beispiel-Einträge der Telegramme
        INSERT INTO `telegrammeVALUES (1'NetWorX''NetWorX''test-
        telegramm'
        '2004-08-22-14-25-18''yes''20050313151030');
        INSERT INTO `telegrammeVALUES (2'NetWorX''NetWorX''noch n test-
        telegramm'
        '2004-08-22-14-27-11''yes''20050313151030');
        INSERT INTO `telegrammeVALUES (3'NetWorX''NetWorX'' h gfhgfh 
        jghfjgj'
        '2004-08-22-14-28-32''yes''20050313151030'); 

        Mein Versuch/Ansatz:

        PHP-Code:
        //Auslesen aller telegramme, die der aufrufende user geschrieben oder empfangen hat.
        $db2 = new db_local;
        $db2->query("SELECT * FROM telegramme WHERE touser = '$chatuser' OR 
        fromuser = '
        $chatuser' ORDER BY fromuser DESC LIMIT ".$start.",".$eintraege_pro_seite.""); 
        Der Teil jedoch, wo ich lediglich die Usernamen auslesen lasse mit denen man schon kontakt hatte (egal ob geschrieben oder empfangen) und diese nur einmal und nicht so oft wie man kontakt hatte aufgelistet werden, isr mir jedoch leider unklar

        Die Ausgabe möchte ich jedoch haben:

        lfd Nr. ---- Gesprächspartner ---- Anzahl Telegramme ---- letztes Telegramm
        1 ---- NetWorX ---- 3 ---- 11.03.2005, 12:03
        2 ---- Userxyz ---- 5 ---- 03.02.2005, 19:36

        Und erst nach einem klick auf den Usernamen soll dann die zeitlich geordnete Auflistung aller Telegramme kommen. Hoffe diesmal habsch mein Problem besser beschrieben..+gg+
        Zuletzt geändert von NetWorX; 13.03.2005, 16:44.

        Kommentar


        • #5
          unbedingt beachten

          Kommentar


          • #6
            hoffe so isses richtig..+g+

            Kommentar


            • #7
              brich bitte deinen code um.


              ich denke, mit GROUP BY und COUNT müsstest du gut bedient sein.
              Zuletzt geändert von penizillin; 13.03.2005, 16:44.

              Kommentar


              • #8
                hoffe ich habs richtig verstanden..+g+

                Kommentar


                • #9
                  Ok,
                  also wie ich doppel-einträge innerhalb einer spalte (fromuser ODER touser) ausfiltern kann das weiss ich jetzt

                  PHP-Code:
                  //Abfrage zum Ausfiltern der Usernamen
                  $db4 = new db_local;
                  $db4->query("SELECT DISTINCT fromuser,touser FROM telegramme WHERE fromuser = '$chatuser' OR touser = '$chatuser'"); 
                  Jetzt habe ich nur noch das problem, wenn ich sowohl an user1 telegramme geschrieben, sowie auch von user1 welche empfangen habe, wenn ich also sowohl touser, wie auch fromuser bin, wird der username immer noch 2 mal ausgegeben. kann man das auch noch irgendwie filtern??

                  Gruss NetWorX

                  Kommentar

                  Lädt...
                  X