daten aus verschiedenen tabellen

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

  • daten aus verschiedenen tabellen

    ich habe drei tabellen: foren, threads und answers.

    diese abfrage zeigt mir alle threads, die im forum vorhanden sind:

    //Herauslesen der Threads, die in dem Forum stehen
    $res = mysql_query("select * from mr73_threads where fid=".$_GET["fid"]);

    wie muss die select abfrage lauten damit ich aus der tabelle foren den namen des forums auslesen und aus der tabelle threads alle einträge anzeigen lassen kann.
    in der ruhe liegt die kraft

  • #2
    suche im forum nach JOIN / LEFT JOIN / LEFT OUTER JOIN

    bei mindestens einen der dreien wirst du was finden. 100%ig.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      und es gibt sogar ein tutorial dafür

      Kommentar


      • #4
        'select foren.name as fname, threads.eintraege as teintraege, foren.id, threads.fid_foren from foren, threads where foren.id=threads.fid_foren'

        wenn ich mal annehme, dass die threads über eine fid_foren die foren referenzieren.

        Kommentar


        • #5
          er soll mir aus der tabelle mr73_foren den namen des forums und aus der tabell mr73_threads all einträge des forum herauslesen.

          er zeigt mir nur eine leere seite an ohne die threads.

          da ich templates verwende habe ich das so angelegt:

          //Herauslesen der Threads
          $res = mysql_query("SELECT name,T1.id,T2.id,fid from mr73_foren T1 Inner Join mr73_threads T2 ON WHERE fid=".$_GET["fid"]);

          while($row = mysql_fetch_array($res)) {

          $id = $row['id'];
          $fid = $row['fid'];

          // Fügt den Namen des Forums in den threads hinzu
          $name = $row['name'];

          $threads = "<a href=./showthreads.php?fid=$row[id] class=nav>Themen anzeigen</a>";
          $topics = "<a href=./showanswers.php?fid=$row[fid]&tid=$row[id] class=nav>$row[topic]</a>";

          $template = implode("",file("tpl/tpl_showthreads.html"));
          $template = str_replace("{id}", $id, $template);
          $template = str_replace("{fid}", $fid, $template);
          $template = str_replace("{name}", $name, $template);
          $template = str_replace("{threads}", $threads, $template);
          $template = str_replace("{topics}", $topics, $template);
          echo ($template);
          }
          ?>

          ich hoffe das mir jemand helfen kann
          mfg maffy
          in der ruhe liegt die kraft

          Kommentar


          • #6
            wenn du fid in beiden tabellen hast und das zur zuordnung nutzt, sollte das hinhauen
            Code:
            SELECT T1.id,T2.id,T1.fid,t2.fid from mr73_foren T1 Inner Join mr73_threads T2 USING (fid)
            poste mal deine tabellenstruktur
            Zuletzt geändert von mrhappiness; 07.07.2003, 19:24.
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              den tabellen aufbau habe ich aus diesem tutorial ( Wie mache ich ein Forum )http://www.php-resource.de/tutorials/read/35/1/ übernommen und um einige spalten erweitert.

              die scripte, wie in dem tutorial beschreiben, haben soweit alle funktioniert.

              foren:
              | id | int(11) | | PRI | NULL | auto_increment |
              | name | tinytext |
              | beschreibung | tinytext

              threads:
              | id | int(11) | | PRI | NULL | auto_increment |
              | fid | int(11) | | | 0
              | topic | tinytext
              | created | timestamp(14)

              answers:
              | id | int(11) | | PRI | NULL | auto_increment |
              | tid | int(11) | | | 0
              | fid | int(11) | | | 0
              | user | tinytext
              | topic | tinytext
              | text | text
              | created | timestamp(14)

              gruss maffy
              in der ruhe liegt die kraft

              Kommentar


              • #8
                Code:
                SELECT f.fid, f.name, t.id, t.fid parentforum, t.topic
                FROM foren f
                INNER JOIN
                threads t
                USING (fid)
                WHERE f.fid=2
                probier das mal in phpmyadmin
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  ich habe das jetzt mal probiert.

                  PHP-Code:
                  //Herauslesen der Threads, die in dem Forum stehen
                  $res =  mysql_query("SELECT f.name, f.fid, t.id, t.fid parentforum, t.topic, t.threads
                  FROM mr73_foren f INNER JOIN mr73_threads t USING (fid) WHERE fid=.
                  $_GET[id]."); 
                  wenn ich auf der seite showforen ein forum auswähle zeigt er mir die seite showthreads zwar an, gibt aber keine datensätze aus.

                  seite zum testen
                  in der ruhe liegt die kraft

                  Kommentar


                  • #10
                    gibt's die spalte threads denn?

                    in deiner tabellenstruktur is sie nich zu sehen

                    probier mein statement doch mal so wie's is in phpmyadmin aus (ggf. die fid in der where-bedingung anpassen)
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      ich verwende perlmyadmin das ist aber warscheinlich egal.


                      habe es hier propiert so wie du es geschrieben hast es kommt dann

                      Query konnte nicht ausgeführt werden:

                      SELECT f.fid, f.name, t.id, t.fid parentforum, t.topic FROM mr73_foren f INNER JOIN mr73_threads t USING (fid) WHERE f.fid=2

                      Grund: Unknown column 'f.fid' in 'field list'1054.
                      in der ruhe liegt die kraft

                      Kommentar


                      • #12
                        tja. die spalte fid gibt's dann wohl nicht in der tabelle mr73_foren .
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          gut, dann werde ich die spalte fid in der tabelle noch anlegen.

                          eigendlich habe ich gedacht das die spalte id in der foren und die fid in der showthread, so wie im tutorial geschrieben, miteinander verknüpft sind.

                          da ja, wenn ich die abfrage ganz normal mache, so wie im tutorial, die datensätze angezeigt werden. aber nur die threads, die im jeweiligen forum stehen.
                          in der ruhe liegt die kraft

                          Kommentar


                          • #14
                            habe jetzt die spalte fid eingebaut.

                            mit dieser abfrage in der showthreads zeigt er mir jetzt den datensatz an der in threads steht und zum forum 1 gehöhrt.

                            SELECT f.fid, f.name, t.id, t.fid parentforum, t.topic
                            FROM mr73_foren f INNER JOIN mr_73 threads t USING (fid) WHERE f.fid=1

                            wie muss ich den link auf showforen bzw. die select abfrage auf showthreads abändern damit er die threads für das jeweilige forum anzeigt.

                            er zeigt mir nur dann daten an wenn ich bei der abfrage nach where 1 2 3 usw eintrage.

                            auf der showforen habe ich jedoch einen link der die einträge öffnen soll.
                            $F_Threads = "<a href=./showthreads.php?fid=$row[id] class=nav>Beiträge von $row[name] anzeigen</a>";[/php]
                            Zuletzt geändert von maffy; 08.07.2003, 19:06.
                            in der ruhe liegt die kraft

                            Kommentar


                            • #15
                              sorry wenn ich jetz noch mal poste.

                              aber es klappt einfach net, dass er die fid von der showforen an die showthreads übergibt und die einträge im forum anzeigt.

                              im pfad steht zwar die richtige fid er zeigt mir aber aber keine daten an.


                              //Herauslesen der Threads, die in dem Forum stehen
                              $res = mysql_query('SELECT f.fid, f.name, t.fid parentforum, t.topic
                              FROM mr73_foren f INNER JOIN mr73_threads t USING (fid) where=$_get[id]');

                              es geht nur wenn ich statt der [id] z.b. 1 schreibe, dann zeigt er mir die einträge im forum 1 an
                              in der ruhe liegt die kraft

                              Kommentar

                              Lädt...
                              X