MYSQL和PHP循环失败

乔治·琼斯

我现在遇到的问题是,有一个while循环来发布我从MySQL检索到的主题。可以正常工作,直到我开始输入数据。我最近创建了一个评论系统,其中每个主题都会有一个评论框要提交。问题是while循环一次又一次地运行它,因此当我为一个主题键入评论时,它将发布到所有主题。这是我的代码:

//MYSQLI LOGIN DETAILS
        $servername = "***";
        $username = "***";
        $password = "***";
        $dbname = "***";
        //MYSQLI CREATE CONNECTION
        $constatus = new mysqli($servername, $username, $password, $dbname);
        //MYSQLI CHECK CONNECTION
        if ($constatus->connect_error) {
            die("Connection failed: " . $constatus->connect_error);
        }
        //MYSQLI COUNT COLUMNS
        $sql = "SELECT NEWSID, AUTHOR, ADMINSTS, DATE, HEADING, ARTICLE FROM news ORDER BY NEWSID DESC";
        $result = $constatus->query($sql);

        if ($result->num_rows > 0) {
            // output data of each row
            while($row = $result->fetch_assoc()) {
                echo 
                "<div class=newsboard_topic>" .
                    "<div class=newsboard_authordate>" . $row["AUTHOR"];
                if ($row["ADMINSTS"] == admin) {
                    echo
                    "<div class=newsboard_adminfx>
                        Admin
                    </div>";
                } else if ($row["ADMINSTS"] == sadmin) {
                    echo
                    "<div class=newsboard_sadminfx>
                        Super Admin
                    </div>";
                }
                if ($_SESSION['adminsts'] == 'admin' || $_SESSION['adminsts'] == 'sadmin') {
                    echo "<span class=newsboard_adminactions> <img src='/image/remove.png' style='width:20px; height:20px;'> </span>";
                }
                echo
                    "<span class=date>" . $row["DATE"] .
                    "</span></div>
                    <h1>" . $row["HEADING"]. 
                    "</h1><p class=newsboard_topic_article>" .
                        $row["ARTICLE"] .
                    "</p>";
                $sqlcomments = "SELECT newscomments.USERID, newscomments.COMMENT, userdata.FIRSTNAME, userdata.LASTNAME, userdata.ADMINSTATUS FROM newscomments JOIN userdata ON newscomments.USERID=userdata.ID WHERE NEWSID=$row[NEWSID] ORDER BY COMMENTID DESC";
                $resultcomments = $constatus->query($sqlcomments);
                echo "<div class=newsboard_comments>
                    Comments
                    <br>";
                while($rowcomments = $resultcomments->fetch_assoc()) {
                    echo $rowcomments["FIRSTNAME"] . " " . $rowcomments["LASTNAME"] . " " . $rowcomments["COMMENT"] . "<br>";
                }
                if (isset($_SESSION['loggedon']) && $_SESSION['loggedon'] == true) {
                    echo '
                        <form method="post">
                            <input class=postheadline type="text" name="comment" />
                            <input class=submit type="submit" id="submit" name="submit" value="Comment"/>
                        </form>';
                    if (isset($_POST[submit])) {
                        if (!empty($_POST[comment])) {
                            $sqlcommentpost = "INSERT INTO newscomments (NEWSID, USERID, COMMENT) VALUES ('$row[NEWSID]', '$_SESSION[profileid]', '$_POST[comment]')";
                            if ($constatus->query($sqlcommentpost) === TRUE) {
                                echo "Posted Successfully!";
                                break;
                            } else {
                                echo "Fatal Error. Please try again";
                                break;
                            }
                        }
                    }
                }
                echo "</div></div>"; /*Ends newsboard_topic Div & newsboard_comments Div*/
            }
        } else {
            echo "0 results";
        }

实时示例在www.geovillageva.com上在线,但是您看不到注释,仅适用于注册成员,因为它会为张贴者起一个名字。

约法卜

让我们在表单中也包含新闻ID。您可以为此提供一个隐藏的输入字段。然后$_POST[nid]在插入时使用此新闻ID

     if (isset($_SESSION['loggedon']) && $_SESSION['loggedon'] == true) {
                        echo '
                            <form method="post">
    <input class=postheadline type="text" name="comment" />
    <input type="hidden" name="nid" value="'.$row[NEWSID].'" />
    <input class=submit type="submit" id="submit" name="submit" value="Comment"/>
                            </form>';
              if (isset($_POST[submit])) {
                   if (!empty($_POST[comment])) {
  $sqlcommentpost = "INSERT INTO newscomments (NEWSID, USERID, COMMENT) VALUES ('$_POST[nid]', '$_SESSION[profileid]', '$_POST[comment]')";
                                if ($constatus->query($sqlcommentpost) === TRUE) {
                                    echo "Posted Successfully!";
                                    break;
                                } else {
                                    echo "Fatal Error. Please try again";
                                    break;
                                }
                            }
                        }
                    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章