Anzeige

Gästeforum

Gästeforum | PSD-Tutorials.de

Erstellt von jargyr, 14.05.2006.

  1. jargyr

    jargyr Guest

    Gästeforum
    Hallo zusammen ich habe ein kleines Problem habe jedoch den ganzen Code zu beseren Verständlichkeit hochgeladen. Ich möchte ein Guestbook in meine Internet Adresse einbauen, jedoch habe ich ein Problemchen mit meiner Datenbank! Ich habe drei Tabellen!

    Tabelle foren:

    +-------+----------+------+-----+---------+----------------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+----------+------+-----+---------+----------------+
    | id | int(11) | | PRI | NULL | auto_increment |
    | name | tinytext | | | | |
    +-------+----------+------+-----+---------+----------------+

    Tabelle "threads"

    +---------+---------------+------+-----+---------+----------------+
    | Field | Type | Null | Key | Default | Extra |
    +---------+---------------+------+-----+---------+----------------+
    | id | int(11) | | PRI | NULL | auto_increment |
    | fid | int(11) | | | 0 | |
    | topic | tinytext | | | | |
    | created | timestamp(14) | | | | |
    +---------+---------------+------+-----+---------+----------------+

    Tabelle answers

    +---------+---------------+------+-----+---------+----------------+
    | Field | Type | Null | Key | Default | Extra |
    +---------+---------------+------+-----+---------+----------------+
    | id | int(11) | | PRI | NULL | auto_increment |
    | tid | int(11) | | | 0 | |
    | fid | int(11) | | | 0 | |
    | user | tinytext | | | | |
    | topic | tinytext | | | | |
    | text | text | | | | |
    | created | timestamp(14) | | | | |
    +---------+---------------+------+-----+---------+----------------+


    ...zusetzlich habe ich ein Formular in Html geschrieben:




    <html>

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Guestbook</title>
    </head>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>Einzeilige Eingabefelder definieren</title>
    </head>
    <body>

    <h1>Guestbook</h1>
    <form action="newthread_script.php" method="post">
    <table border="0" width="100%" id="table1">
    <tr>
    <td width="194">Name:</td>
    <td> <input name="name" type="text" size="30" maxlength="30"></td>
    </tr>
    <tr>
    <td width="194">Topic: </td>
    <td> <input name="topic" type="text" size="30" maxlength="40"></td>
    </tr>
    <tr>
    <td width="194" valign="top">Nachricht:</td>
    <td><textarea name="nachricht" type="text" cols="50" rows="10"></textarea></td>
    </tr>
    <tr>
    <td width="194">Formular:</td>
    <td> <input type="submit" name="Submit" value="Absenden"> <input type="reset" value=" Abbrechen"></td>
    </tr>
    <tr>
    <td width="194">&</td>
    <td> <input type="hidden" name="fid" type="text" size="30" maxlength="40" value="1"></td>
    </tr>
    </table>

    </form>

    </body>
    </html>
    </html>




    ... und hier ensteht schon mein Problem




    <?/* newthread_script.php */
    //Herstellen der MySQL verbindung
    $con = mysql_connect('localhost', 'root', '');
    $db = mysql_select_db("forum");
    //Variablen auf andere Deklarieren (ist einfacher zu schreiben)
    $topic = $_POST["topic"];
    $name = $_POST["name"];
    $nachricht = $_POST["nachricht"];
    $fid = $_POST["fid"];
    //schreiben in DB (nur Thread an sich)
    mysql_query("insert into threads set fid='$fid', topic='$topic', created=now()");
    //nun brauchen wir noch die neue ID des Threads, um sie in answers
    // einzutragen
    $res = mysql_query("select max(id) AS max from threads");
    $row = mysql_fetch_array($res);
    $thread_id = $row["max"];

    //so nun schreiben wir den eigentlichen Beitrag in die DB
    mysql_query("insert into answers set text='$text', topic='$topic', user='$name', fid='$fid', tid='$thread_id', created=now()");

    //Weiterleitung zu der Auflistung der Threads im
    //bereits ausgewählten Forum
    header("Location: showthreads.php?fid=".$fid);
    ?>




    ... wenn ich meine Antworten ansehen will dann erscheinen im Mozilla nur die Eingaben des Titel des Beitrages und der Name des Autors, aber es erscheint keine Nachricht! Was mache ich falsch? Ist der Programmiercode echo "Nachricht: ".$text."
    "; falsch? Was muss ich machen damit die Nachricht als Text in meiner answers Datei im Mozilla erscheint?





    <?/* showanswers.php */
    //Herstellen der MySQL verbindung
    $con = mysql_connect('localhost', 'root', '');
    $db = mysql_select_db("forum");

    //Lesen aus DB
    $res = mysql_query("select * from answers where fid=".$_GET["fid"]." AND tid=".$_GET["tid"]);

    //ausgeben
    while($row = mysql_fetch_array($res)) {
    $text = nl2br($row["text"]);
    echo "

    ";
    echo "Titel des Beitrags: ".$row["topic"]."
    ";
    echo "Name des Autors: ".$row["user"]."
    ";
    echo "Nachricht: ".$text."
    ";
    echo "</p>";}
    ?>

    <?/* showthreads.php */
    //Herstellen der MySQL verbindung
    $con = mysql_connect('localhost', 'root', '');
    $db = mysql_select_db("forum");

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

    //Ausgeben der Threads mit Hyperlink auf showanswers.php
    //Die jetzige Ausgabe der Tabelle "threads" liefert jetzt
    //eine neue Variable mit, die wir auch in den Link
    //setzen müssen
    while($row = mysql_fetch_array($res)) {
    echo "<a href=\"showanswers.php?fid=".$row["fid"]."&tid=".$row["id"]."\">";
    echo $row["topic"]."</a>
    ";
    }
    ?>


    <?
    /* showforen.php */
    //Herstellen der MySQL verbindung
    $con = mysql_connect('localhost', 'root', '');
    $db = mysql_select_db("forum");

    //Herauslesen der Foren
    $res = mysql_query("select * from foren");

    //Ausgeben der Foren mit Hyperlink
    while($row = mysql_fetch_array($res)) {
    echo "<a href=\"showthreads.php?fid=".$row["id"]."\">";
    echo $row["name"]."</a>
    ";
    }
    ?>
     
    #1      
  2. No0oB

    No0oB Guest

    Gästeforum
    Probier mal statt:
    [php:1:7f64f17269]$res = mysql_query("select * from threads where fid=".$_GET["fid"]);[/php:1:7f64f17269]
    folgendes:
    [php:1:7f64f17269]$res = mysql_query("select * from threads where fid="$_GET['fid']");[/php:1:7f64f17269]
    Das gleiche gilt auch für andere Abfragen.
    Und das nächste mal, beuntz bitte die Code, bzw. PHP Formattierung
     
    #2      
  3. jargyr

    jargyr Guest

    Gästeforum
    Hilft nichts

    Hilft nichts! Trotzdem Danke
     
    #3      
  4. devaiting

    devaiting Guest

    Gästeforum

    Na? Fällt dir was auf? Ja! Richtig! 2 mal "type=" in nem Input-Tag, kann in die Hose gehen!
    Entweder als Text oder als versteckter Wert!!

    So, nun dazu, das dein Script funzt!!!!

    Hier 2 Ausschnitte aus deinem Code




    Fällt dir was auf??? Richtig!!

    Du deklarierst oben $nachricht, verwendest aber unten im mysql-befehl $text !!!
    Entweder du nennst deine variable $nachricht in $text um, oder schreibst im mysql-befehl " set text='$nachricht' " (ohne Anführungszeichen!)
    Ich würde mich für variante 1 entscheiden, das ist nicht ganz so verwirrend!

    Grundsätzlich solltest du bei fehlern anfangen einzugrenzen! Wenn einzelne Werte eines Datensatzes fehlen und keine php-fehlermedlung rausgegangen ist, dann liegt es warscheinlich dadran, das der wert in der datenbank garnicht existiert und php eben ein leeres feld ausgibt!! Deshalb vorher mal mit phpmyadmin in der datenbank nachschauen, ob denn in dem feld was drinsteht und dann nachgucken, ob irgendwelche variablen vertauscht oder falsch benannt wurden.



    Bittesehr!


    MfG
     
    #4      
x
×
×