php - MYSQL 和 PHP 循环失败

标签 php html mysql mysqli

我现在遇到的问题是,有一个 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 上,但您看不到评论,因为它仅适用于注册成员(member),因为它会有海报名称。

最佳答案

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

     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;
                                }
                            }
                        }
                    }

关于php - MYSQL 和 PHP 循环失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40797537/

相关文章:

php - 无法将 upload_max_filesize 更改为 Azure

php - 如何在 Eclipse 中设置 Zend Debugger?

html - 如何在旋转木马 slider 中添加空间并仅显示 3 张图像

mysql - 如何在 MySql 中查询名字和姓氏字符串

Mysql - 选择到 XML

php - 缓存在php上生成的动态图像

javascript - 坐标对象的二维动态 javascript 矩阵

html - 移动滑动推送导航

python - 如何从本地计算机连接到部署在计算引擎上的mysql-server?

php - 如何在 PHP 或 Laravel 中访问 JsonResponse 对象中的属性值?