PHP表格中的多个提交按钮

标签 php html mysql form-submit

我一直在创建一个 php 网站,允许用户向系统内的图像添加评论。

我的代码当前的工作方式是获取该图像的所有注释,并使用 while 循环将它们放入表中:

$commResult = mysql_query("SELECT u.userID, u.USERNAME, c.COMMENT, c.DATE_ADDED, c.ACTIVE, c.id FROM USERS u, COMMENTS c WHERE u.id = c.user_id and c.box_id = $boxId ORDER BY c.DATE_ADDED DESC");

while ($row = mysql_fetch_array($commResult))
    {
        if ($row[4] != 0)
        {
            echo "<tr><td><a href='User.php?uid=$row[0]'>$row[1]</a></td>";
            echo "<td style='text-align:right;'>" . date("d M y g:iA", strtotime($row[3])) ;
            if (isLoggedIn())
                echo " - DELETE";
            echo "</td></tr>";
            echo "<tr><td colspan='2'>" . $row[2] . "</td></tr>";
        }
    }

我遇到的问题是我想在“删除”一词所在的位置放置一个提交按钮。这将为每个注释行创建一个按钮,因此如果单击,代码将不知道按下了哪个按钮。无论如何,有没有办法解决这个问题,让每个按钮都有一个单独的 ID,这样当提交代码时,它就知道评论的 ID 是什么,因此我能够在数据库表上处理该评论 ID 的删除。

我尝试在单词 DELETE 所在的位置添加这段代码:

if (isLoggedIn())
                echo " - <button type='submit' name='delCom_sub' value='$row[5]' >X</button>";

但是,当我尝试使用以下代码处理按钮单击时:

if (!empty($_POST['delCom_sub']))
{
    echo "test";
}

如果我单击按钮,则永远不会显示“test”一词。

最佳答案

可以为每个评论行使用单独的表单来完成。评论的 ID 存储在隐藏字段中。使用此方法,您需要删除任何父表单以防止嵌套表单。

        if (isLoggedIn())
        {
            echo '<form action="delete.php" method="post">
                  <input type="hidden" name="id" value="' . (int)$row['id'] . '" />
                  <input type="submit" value="Delete" />
                  </form>';
        }

在您发布的页面上,即delete.php:

if(isset($_POST['id']) && isLoggedIn())
{
    // do the delete with $_POST['id']
}

除此之外,您还可以使用 Javascript 通过在单击按钮时填充隐藏字段来完成此操作。另一种选择是将评论 ID 存储在提交按钮的 name 属性中,这样做时您必须循环遍历帖子变量并解析出 ID。

使用按钮名称的示例:

if (isLoggedIn())
            echo " - <input type='submit' name='delete_" . (int)$row['id'] . "' value='Delete' />";

在接收页面:

if($_SERVER['REQUEST_METHOD'] == 'POST' && isLoggedIn())
{
    foreach($_POST as $key => $value)
    {
        if(strpos($key, 'delete_') === 0)
        {
            $id = substr($key, 7);
            // do the delete for $id
        }
    }
}

关于PHP表格中的多个提交按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14686257/

相关文章:

PHPLint - 一些问题

javascript - 如何让 jQuery 实时搜索在 javascript 数组中更准确?

php - magento 的空白前端

javascript - 如何使用 jquery 正确创建文本字段

php - mysql 从单个表中获取好友

javascript - 如何使用 codeigniter(由 javascript 代码捕获的图像)将捕获的图像保存在文件夹中?

python - BeautifulSoup : Best ways to comment out a tag instead of extracting it?

javascript - 使用javascript和css垂直居中出错

mysql - 保存/更新模型时 Django "Lock wait timeout exceeded; try restarting transaction"

mysql - 使用 mysql 在 Ubuntu 上安装 Sonar