[PHP] Leere Ausgabe, obwohl inhalt vorhanden - MySQL

Dieses Thema im Forum "Webentwicklung" wurde erstellt von DOWNandOUT, 1. Dezember 2008 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 1. Dezember 2008
    Leere Ausgabe, obwohl inhalt vorhanden - MySQL

    Hi, hab folgendes Problem. Ich habe ein "kleines" Forum, so. Auf der Topic seite wird folgender Query benutzt:

    PHP:
    "SELECT * FROM tbl_topic,tbl_answer WHERE tbl_topic.topicid AND tbl_answer.topicid = '" . $GETTOPICID . "'
    So, dann wird das ganze in ne while gepackt:

    PHP:
    echo  "<tr>" ;
    echo 
    "<td>Autor:</td>" ;
    echo 
    "<td>" . $trow [ 'starter_autor' ]. "</td>" ;
    echo 
    "</tr>" ;

    echo 
    "<tr>" ;
    echo 
    "<td>Datum:</td>" ;
    echo 
    "<td>" . $nDate . "</td>" ;
    echo 
    "</tr>" ;

    echo 
    "<tr>" ;
    echo 
    "<td>Text:</td>" ;
    echo 
    "<td><textarea style='color: black;' name='text' cols='60' rows='10' disabled='disabled'>" . $trow [ 'text' ]. "</textarea></td>" ;
    echo 
    "</tr>" ;


    echo 
    "<tr>" ;
    echo 
    "<td>Autor:</td>" ;
    echo 
    "<td>" . $trow [ 'autor' ]. "</td>" ;
    echo 
    "</tr>" ;

    echo 
    "<tr>" ;
    echo 
    "<td>Datum:</td>" ;
    echo 
    "<td>" . $nnDate . "</td>" ;
    echo 
    "</tr>" ;

    echo 
    "<tr>" ;
    echo 
    "<td>Text:</td>" ;
    echo 
    "<td><textarea style='color: black;' name='text' cols='60' rows='10' disabled='disabled'>" . $trow [ 'message' ]. "</textarea></td>" ;
    echo 
    "</tr>" ;
    ----------

    Mein problem ist nun, das wenn z.b. in der tbl_topics nen thema für die topicid drin is, aber in der antwort tbl keine drin ist, gibt er einfach nichts aus. dabei sollte er ja eigtl den inhalt der tbl_topics für die jeweilige id ausgeben.

    Also:

    Wenn Thema + Antwort vorhanden ist = Ausgabe
    Wenn Thema ohne Antwort vorhanden ist = garkeine Ausgabe

    Was ist falsch?

    Danke
    Jan225
     
  2. 1. Dezember 2008
    AW: Leere Ausgabe, obwohl inhalt vorhanden - MySQL

    Durch die Prüfung auf tbl_antwort.topicid filterst du alle Datensätze raus, die keine Topic-ID haben.

    Versuchs mal so:

    PHP:
    SELECT
        
    *
    FROM
        tbl_topic tt
        LEFT JOIN tbl_answer ta ON tt
    . topicid  ta . topicid  AND  tt . topicid  mysql_real_escape_string ( $GETTOPICID )
     
  3. 1. Dezember 2008
    AW: Leere Ausgabe, obwohl inhalt vorhanden - MySQL

    Ok danke, das geht soweit. Jetzt hab ich aber das Problem, das obwohl GETTOPICID = 1 ist er auch die Themen/Antworten mit ID 2 ausließt und auch in dem Thema ausgibt ..
     
  4. 1. Dezember 2008
    AW: Leere Ausgabe, obwohl inhalt vorhanden - MySQL

    Sorry, so:

    Code:
    SELECT
     *
    FROM
     tbl_topic tt
     LEFT JOIN tbl_answer ta ON tt.topicid = ta.topicid
    WHERE
     tt.topicid = mysql_real_escape_string($GETTOPICID)
    
     
  5. 1. Dezember 2008
    AW: Leere Ausgabe, obwohl inhalt vorhanden - MySQL

    Danke Es funktioniert jetzt (fast) perfekt. Bw ist schonmal raus.

    Hättest du evtl noch eine Idee, wie ich machen kann, das wenn für das Thema keine Antwort vorhanden ist, er nicht den unteren Teil der while ausgibt? Weil sonst kommt, wenn keine Antwort vorhanden ist trotzdem das Textfeld etc.. nur halt ohne Inhalt.

    Der untere Teil:
    echo "<tr>";
    echo "<td>Autor:</td>";
    echo "<td>".$trow['autor']."</td>";
    echo "</tr>";

    echo "<tr>";
    echo "<td>Datum:</td>";
    echo "<td>".$nnDate."</td>";
    echo "</tr>";

    echo "<tr>";
    echo "<td>Text:</td>";
    echo "<td><textarea style='color: black;' name='text' cols='60' rows='10' disabled='disabled'>".$trow['message']."</textarea></td>";
    echo "</tr>";
     
  6. 1. Dezember 2008
    AW: Leere Ausgabe, obwohl inhalt vorhanden - MySQL

    Wenn zu einem Topic keine Antworten existieren, wird mysql_num_rows($deine_resource) 1 zurückgeben und die antwort_id (die ID der Datensätze in der Tabelle tbl_answer) leer sein (eigentlich NULL, aber im Ergebnis-Array in PHP ist es ein leerer String). Du müsstest also prüfen, ob mysql_num_rows($deine_resource) 1 zurück gibt und, falls ja, prüfen, ob die antwort_id leer ist. Wenn beides zutrifft, gibt es zu dem Topic keine Antworten :]

    Ich kann mich aber auch täuschen
     
  7. 2. Dezember 2008
    AW: Leere Ausgabe, obwohl inhalt vorhanden - MySQL

    Ok, erfolgreich hinbekommen

    Jetzt hab ich noch ein letztes Problem, wenn nun mehr als eine Antwort vorhanden ist, also z.B. 3 siehts so aus:

    TOPIC

    1. Antwort

    Nochmal TOPIC

    2. Antwort

    --------

    Also er gibt pro Antwort noc heinmal den Inhalt aus tbl_topic aus, wie kann man das wegmachen?
     
  8. 2. Dezember 2008
    AW: Leere Ausgabe, obwohl inhalt vorhanden - MySQL

    $topic aus der while-Schleife nehmen? xD

    Poste mal den ganzen PHP-Code...
     
  9. 2. Dezember 2008
    AW: Leere Ausgabe, obwohl inhalt vorhanden - MySQL

    Naja wie wärs so:

    PHP:
    $iCounter  1 ;

    while (
    $table  mysql_fetch_assoc ( $res ))
    {
        if (
    $iCounter  ==  1 )
        {
            echo 
    "Topic-Name: "  $table [ 'topicname' ];
            echo 
    "<br /><br />Antworten:<br /><br />" ;
        }
        
        echo 
    $table [ 'antwort' ] .  "<br />" ;
        
        
    $iCounter ++;
    }
    Beim 1. Durchlauf ($iCounter = 1) gibst du den Topic-Namen mit aus, danach nur noch die Antworten.
     
  10. 2. Dezember 2008
    AW: Leere Ausgabe, obwohl inhalt vorhanden - MySQL

    So, hab alles hinbekommen. Danke an alle Close
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.