是否可以在 isset $_post['submit'] 中添加一个变量

is it possible to add a variable inside the isset $_post['submit']

是否可以这样做?

 if (isset($_POST['Submit_'.$_POST['ID']])) {
}

if (isset($_POST['Submit_' + $_POST['ID']])) {
    }

我想这样做,这样我就可以为所有帖子获得一个不同的提交按钮,因为我在帖子系统中有一个评论系统.. 所以所有帖子都有一个新的提交按钮。

提交按钮是这样制作的:

echo "<button type='submit' class='commentbtn' name='commentSubmit_".$row['ID']."'></button>

我已经检查过所有按钮都有不同的名称,所以这是我无法工作的另一件事。

评论表:

 echo "<div class='commentform'><form id='comment_form_".$row1['sid']."' action='".setComment($conn)."' method='POST'>
                    <textarea name='commentText' class='commenttext' placeholder='Comment this..'></textarea>
                    <input type='hidden' name='uname' value='".$_SESSION['name']."'>
                    <input type='hidden' name='uid' value='".$_SESSION['id']."'>
                    <input type='hidden' name='uimg' value='".$_SESSION['profile_img']."'>
                    <input type='hidden' name='date' value='".date('Y-m-d H:i:s')."'>
                    <input type='hidden' name='sid' value='".$row1['sid']."'>
                    <button class='commentbtn' name='commSubmit_".$row1['sid']."' type='submit' style='border: 0; background: transparent'>
    <img src='images/comment-icon.png'  height='24'' alt='comment' title='Comment''  />
</button></form></div>";

setComment函数:

  function setComment($conn) {
    if(isset($_POST['sid']) && isset($_POST['commSubmit_'.$_POST['sid']])){
        $uname = $_POST['uname'];
        $uid = $_POST['uid'];
        $date = $_POST['date'];
        $comment = $_POST['commentText'];
        $uimg = $_POST['uimg'];
        $sid = $_POST['sid'];

        $sql = "INSERT INTO status_comments (uid, sid, uname, comment, uimg, date) VALUES ('$uid', '$sid', '$uname', '$comment', '$uimg', '$date')";
        $result = mysqli_query($conn, $sql);
    }
  }

完成 setStatus 函数,里面有注释表单:

 function getStatus($conn) {
       $sql = "SELECT * FROM status ORDER BY sid DESC";
       $query = mysqli_query($conn, $sql);
       while ($row1 = $query->fetch_assoc()) {
           echo "<div class='commentbox'>";
           echo "<div class='commentimg'><img src='images/".$row1['commentimg']."' width='50px'></div>";
           echo "<div class='namedate'>";
           echo $row1['uidname']."<br>";
           echo "<div class='commdate'>".$row1['date']."<br><br></div></div><hr>";
           echo "<div class='statusmessage'><p>".nl2br($row1['message'])."</p></div>";
           echo "<div class='statusimage'><img src='userimages/".$row1['status_image']."'></div>";
           echo "<div class='likerow'>";

           $result = mysqli_query($conn, "SELECT * FROM status_like WHERE uid=".$_SESSION['id']." and sid=".$row1['sid']."");
                if (mysqli_num_rows($result) == 1) {
                    echo "<span><a href='' class='unlike' id='".$row1['sid']."'><div class='unlike-btn'><img src='images/dislike.png'></div></a><p>| ".$row1['likes']."  likes!</p></span>";
                } else {
                    echo "<span><a href='' class='like' id='".$row1['sid']."'><div class='like-btn'><img src='images/like.png'></div></a><p>| ".$row1['likes']."  likes!</p></span>";
                }
           echo "</div>";    

           echo "<div class='commentform'><form id='comment_form_".$row1['sid']."' action='".setComment($conn)."' method='POST'>
                    <textarea name='commentText' class='commenttext' placeholder='Comment this..'></textarea>
                    <input type='hidden' name='uname' value='".$_SESSION['name']."'>
                    <input type='hidden' name='uid' value='".$_SESSION['id']."'>
                    <input type='hidden' name='uimg' value='".$_SESSION['profile_img']."'>
                    <input type='hidden' name='date' value='".date('Y-m-d H:i:s')."'>
                    <input type='hidden' name='sid' value='".$row1['sid']."'>
                    <button class='commentbtn' name='commSubmit_".$row1['sid']."' type='submit' style='border: 0; background: transparent'>
    <img src='images/comment-icon.png'  height='24'' alt='comment' title='Comment''  />
</button></form></div>";

           if ($_SESSION['id'] === $row1['uid'] || $_SESSION['usertype'] === 'topadmin'){
           echo "<form class='delete-form' method='POST' action='".deleteStatus($conn)."'>

                   <input type='hidden' name='sid' value='".$row1['sid']."'>
                   <input type='hidden' name='sid' value='".$row1['sid']."'>
                   <button type='submit' title='Delete Status' name='statusDelete'>X</button>
                </form>
                <form class='edit-form' method='POST' action='editcomment.php'>
                   <input type='hidden' name='sid' value='".$row1['sid']."'>
                   <input type='hidden' name='uid' value='".$row1['uid']."'>
                   <input type='hidden' name='date' value='".$row1['date']."'>
                   <input type='hidden' name='message' value='".$row1['message']."'>
                   <button type='submit' style='border: 0; background: transparent'>
    <img src='images/edit-icon.png'  height='10'' alt='edit' title='Edit Status''  />
</button>


                </form>";
           }
           echo "</div>";
       }


   }

是的,这是可能的,您的第一个变体是正确的。

我认为一个更好的主意可能是为每个评论字段制作一个单独的表单,并将 ID 添加为隐藏输入。

像这样:

<form method="post" action="/something">
<textarea name="comment">
<input type="hidden" name="id" value="$row['ID']">
<button type="submit" name="submit"></button>
</form>

我无法真正理解您代码中的逻辑,但似乎您将过程复杂化了...而且我认为您的操作实际上并未指向您显示的那个函数,而是, 指向具有该功能的页面...无论如何...如果您有此表单

 echo "
<div class='commentform'>
    <form id='comment_form_".$row1['sid']."' action='setcomment.php' method='POST'>
        <textarea name='commentText' class='commenttext' placeholder='Comment this..'></textarea>
        <input type='hidden' name='uname' value='".$_SESSION['name']."'>
        <input type='hidden' name='uid' value='".$_SESSION['id']."'>
        <input type='hidden' name='uimg' value='".$_SESSION['profile_img']."'>
        <input type='hidden' name='date' value='".date('Y-m-d H:i:s')."'>
        <input type='hidden' name='sid' value='".$row1['sid']."'>
        <button class='commentbtn' name='commSubmit_".$row1['sid']."' type='submit' style='border: 0; background: transparent'>
            <img src='images/comment-icon.png'  height='24'' alt='comment' title='Comment''  />
        </button>
    </form>
</div>";

然后当该表单发布到 setcomment.php 时,像这样简单的事情就可以了......

if(isset($_POST['sid']) && isset($_POST['commSubmit_'.$_POST['sid']])){
     setComment($conn);  
}
 function setComment($conn) {

        $uname = $_POST['uname'];
        $uid = $_POST['uid'];
        $date = $_POST['date'];
        $comment = $_POST['commentText'];
        $uimg = $_POST['uimg'];
        $sid = $_POST['sid'];

        $sql = "
            INSERT INTO 
                status_comments 
            (
                uid, sid, uname, comment, uimg, date
            ) 
            VALUES 
            (
                '".mysqli_real_escape_string($conn,$uid)."', 
                '".mysqli_real_escape_string($conn,$sid)."', 
                '".mysqli_real_escape_string($conn,$uname)."', 
                '".mysqli_real_escape_string($conn,$comment)."', 
                '".mysqli_real_escape_string($conn,$uimg)."', 
                '".mysqli_real_escape_string($conn,$date)."'
            )";
        $result = mysqli_query($conn, $sql);

  }

是的,你的第一个表达是正确的。检查 PHP concatenate for more information. Though I would use following 以检查表单提交。

// check if request method is post
if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    // .... your code
}

此外,我已经查看了您的代码。我认为错误的形式是 HTML。

echo "<div class='commentform'><form id='comment_form_".$row1['sid']."' action='".setComment($conn)."' method='POST'>

它导致功能运行 4 次和记录注释 4 次。请替换 action='#' 或 action='processComent.php' // 流程代码的位置。

中做同样的事情
<form class='delete-form' method='POST' action='".deleteStatus($conn)."'>

删除时也会发生同样的事情。