Ankündigung

Einklappen
Keine Ankündigung bisher.

werte aus mehreren tabellen auslesen

Einklappen

Neue Werbung 2019

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

  • werte aus mehreren tabellen auslesen

    hiho...
    ich hab mir für mein forum eine lastpost.php erstellt, die folgendes ausgibt:
    boardid, topic, starter und link... dass alles befindet sich in der tabelle board_threads
    nun möchte ich zusätzlich zum topic noch den geposteten text ausgeben lassen, der sich aber in einer anderen tabelle befindet, board_post -> "messages"...
    in den beiden tabellen existieren jeweils die gleichen "postid"
    wie bekomme ich in die lastpost.php diese abfrage?
    bin noch nicht so bewandert mit php+mysql also macht es mir bitte nicht zu schwer ...hier noch der code:
    PHP-Code:
    <?
    //Verbindung herstellen
    $db = mysql_connect("localhost","user","pass");
    mysql_select_db("DB",$db);

    //Daten auslesen
    $result = mysql_query("SELECT * FROM board_threads order by threadid desc",$db);
    echo mysql_error();
    ?> 
    <table width="100%" border="0" align="center" cellpadding="0" cellspacing="1">
      <? while ($daten = mysql_fetch_array($result)) { ?>
      <tr> 
        <td>
            <item>
            <board><? echo $daten[boardid]; ?></board>
        </td>
        <td> 
          <title><? echo $daten[topic]; ?></title>
        </td>
        <td> 
          <starter><? echo $daten[starter]; ?></starter>
        </td>
        <td> 
        <link>http://...<? echo $daten[threadid]; ?></link>
        </td>
      </tr>
      </item>
      <? } ?>
    </table>
    MfG Bodo

  • #2
    Dazu gäbe es Dutzende von Beispielen im Forum. Da in deinem Code aber sonst noch einige Halb- oder Ganzfehler (nicht existierende HTML_Tags, fehlende Anführungszeichen bei Indizes, etc) sind, hier noch eine Version, wie ich es benutzen würde:
    PHP-Code:
    <?php
    $db 
    mysql_connect("localhost","user","pass");
    mysql_select_db("DB",$db);

    //Daten auslesen
    $sql "SELECT 
                t.boardid, 
                t.topic, 
                t.starter, 
                t.threadid,
                p.messages
            FROM board_threads t
            INNER JOIN board_post p ON t.postid = p.postid
            ORDER BY threadid DESC"
    ;
    $result mysql_query($sql) or die("Fehler: " mysql_error() . "
    Abfrage: 
    $sql
    "
    ;
    echo 
    "<table width='100%' border='0' align='center' cellpadding='0' cellspacing='1'>\n";
    while (
    $daten mysql_fetch_array($result)){
        echo 
    "
          <tr> 
            <td>" 
    $daten['boardid'] . "</td>\n
            <td>" 
    $daten['topic'] . "</td>\n
            <td>" 
    $daten['starter'] . "</td>\n
            <td>[url='http://" 
    $daten['][/url]Hier fehlt was</td>\n
          </tr>
          <tr>
            <td colspan='
    4'>" . $daten['messages'] . "</td>\n  
          </tr>\n";
    }
    echo "</table>\n";
    ?>
    Ich persönlich mag die Mischung von HTML und PHP nicht, darum hab ich das geändert. Das ist aber reine Ansichtssache.
    Gruss
    L

    Kommentar


    • #3
      Parse error: parse error, unexpected ';' in /...../lastpost1.php on line 15

      was bedeutet denn "t." und "p." muss ich das ändern oder dient das zu identifizierung?

      MfG Bodo

      Kommentar


      • #4
        Parse-Errors sollten auch Anfänger eigentlich selber herausfinden. Es fehlt die schliessende Klammer vor dem Simikolon.
        t und p sind Aliases, also andere Namen für die Tabellen. Selbstverständlich kannst du stattdessen auch die Tabellennamen benutzen, mir sind sie einfach zu lang.
        Gruss
        L

        Kommentar


        • #5
          Fehler: Unknown column 'p.messages' in 'field list'
          Abfrage: SELECT t.boardid, t.topic, t.starter, t.threadid, p.messages FROM board_threads t INNER JOIN board_posts p ON t.postid = p.postid ORDER BY threadid DESC

          ...ich versteh nicht mehr

          Kommentar


          • #6
            Also stimmen die im ersten Beitrag erwähnten Vorgaben nicht. Die Fehlermeldung dürfte eigentlich klar genug sein. Viellecht einfach ein Schreibfehler. Schau dir die Tabelle mal genauer an, z.B. mit:
            Code:
            show create table board_posts
            Gruss
            L

            Kommentar

            Lädt...
            X