php - my guestbook will not display the posts i enter

741

I want to thank you in advance for helping me with my related issue. The thing is my guestbook is getting the data into the database so it is connecting but when i hit submit the data goes to the database but does not display i am not sure as this maybe be a version conflict. I was watching YouTube in creating this guestbook but not sure what version the guy that created the guestbook. Everything works except the display of the post. I was wondering if you guys could help me with this and i will post code below.

<?php error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED); ?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Title of the document</title>
    </head>


    <body>
<?php
// connect to the database
mysql_connect('localhost', 'root', '');
mysql_select_db('tutorials');


/* * ************************************************* */
// form and add stuff area

echo "<h3> Enter posts to GuestBook </h3>";

if ($_POST['postbtn']) {

    $name = strip_tags($_POST['name']);
    $email = strip_tags($_POST['email']);
    $message = strip_tags($_POST['message']);

    if ($name && $email && $message) {


        $time = date("h:i A");
        $date = date("F d, Y");
        $ip = $_SERVER['REMOTE_ADDR'];

        // add to the database
        mysql_query("INSERT INTO guestbook VALUES ( '', '$name', '$email', '$message', '$time', '$date', 'ip'
            )");

        echo "Your post has been added.";
    } else {

        echo "You did not enter in all the required information";
    }
}
echo "<form action = './guestbook.php' method = 'post'>

    <table>


        <tr>

            <td>Name:</td>
            <td><input type = 'text' name = 'name' style = 'width: 300px;' /></td>

        </tr>
        <tr>

            <td>Email:</td>
            <td><input type = 'text' name = 'email' style = 'width: 300px;' /></td>

        </tr>
        <tr>

            <td>Message:</td>
            <td><textarea  name = 'message' style = 'width: 300px; height: 300px;'></textarea></td>

        </tr>
        <tr>

            <td></td>
            <td><input type = 'submit' name = 'postbtn' value = 'Post' /></td>

        </tr>


    </table>




    </form>";

/* * ************************************************ */
//display stuff area

echo "<h3> Current Posts </h3>";
$query = mysql_query("SELECT * FROM guestbook ORDER BY id DESC");

$numrows = mysql_num_rows($query);

if ($numrows > 0) {
    echo "<hr />"; //echoing out the top horizontal line    
    while ($rows = mysql_fetch_assoc($query)) {

        $id = $row['id'];
        $name = $row['name'];
        $email = $row['email'];
        $message = $row['message'];
        $time = $row['time'];
        $date = $row['date'];
        $ip = $row['ip'];


        //nl2br new line to break function
        $message = nl2br("message");

        echo "<div>

            By <b>$name</b> - at <b>$time</b> on <b>$date </b><br />
            $message
        </div> <hr />";
    }
} else {

    echo "No posts were found.";
}

mysql_close();
?>
    </body>
</html>
460

Answer

Solution:

You've pluralizedrows in yourwhile loop:

while ( $rows = mysql_fetch_assoc($query) ){
            ^ - plural

    $id = $row['id'];
              ^ no "s" - singular

while ( $rows where you're using$row for everything else, which is why it's not displaying any of your rows.

Usewhile ( $row in singular form.


I need to point out that your present code is open to . Use , or , they're much safer.

People are also looking for solutions to the problem: javascript - form give alert message

Source

Didn't find the answer?

Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.

Ask a Question

Write quick answer

Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.

Similar questions

Find the answer in similar questions on our website.