我有以下按钮echo'd:
<input type='submit' name='delete_$id' value='x' title='Delete message' />
$id
从这里收集:
$get_messages = mysqli_query ($connect, "SELECT * FROM private_messages WHERE message_to = '$username' OR message_from='$username' AND
DELETED ='no' ORDER BY id DESC");
while ($get_msg = mysqli_fetch_assoc($get_messages)){
$id = $get_msg['id'];
}
我想获取x
分配到的消息的 id,然后执行以下命令:
if (@$_POST['delete_' . $id . '']){
echo "Deleted";
}
但是回声没有显示在我的页面上,这意味着代码有问题。我已经检查了无数次,但无法弄清楚为什么它不起作用?
编辑:
我只是尝试添加一个delete
按钮,单击该按钮将SET
表中的deleted
列以yes
。
以下是找到delete
按钮的完整代码:
<?php
echo "
<div class='parent'>
<div class='msg_prof'>
<img class='img-rounded' src='/user_data/profile_pics/$my_pro_pic'/>
</div>
<div class='new_msg_from_user'>
<p><b style= 'color: red;'> You said:</b> $msg_body</p>
<span class='faded'>$date </span>
<input type='submit' name='delete_$id' value='x' title='Delete message' />
</div><hr/>
</div>";
?>
我的想法是,我可以使用 $id
变量获取帖子的 id,并将其分配给名称。然后通过使用if (@$_POST['delete_' . $id . ''])
我可以根据$id
执行查询 - 现在我正在尝试回显消息,仅用于测试目的。这是我为此功能编写的所有代码。
你忘记了php标签。
<input type='submit' name='delete_<?php echo $id ?>' value='x' title='Delete message' />
首先,看看你显示的行是什么:
<input type='submit' name='delete_$id' value='x' title='Delete message' />
例如,名称应/必须显示为name='delete_1'
或name='delete_9'
,或在其名称末尾带有数字/数字的任何其他string
。通俗地说:name='delete_anyNumber'
为此,您应该在PHP文件中拥有消息的获取记录(您想要显示的消息,并且有一个十字按钮,仅用于很好地呈现NORMS),并在迭代循环中遍历每个结果,使用X按钮回显所有消息,例如:
echo "<input type='submit' name='delete_" . $ResultVariableHoldingRows['id'] . "' value='x' title='Delete message' />";
原因是:(您必须正确显示它,以便在发布表单时,您必须能够获得需要删除的确切 POSTED 值,这样您就不必迭代来检查需要删除哪一行。
解决上述问题后,请按照以下说明操作:
在提交后调用的 PHP 文件中访问该值:
$_POST['''delete_' . $id . '''']
建议:使用 AJAX 调用删除相应的消息,因为单个页面上的许多表单不是一个好方法,在发布问题之前在 AJAX 上进行一些好的搜索
如提到的评论,您必须遍历global POST array
。
<?php
function getRecordIdFromKey($sKey)
{
$sId = str_replace("delete_", "", $sKey);
$iReturn = -1;
if (strlen($sId) > 0 && is_numeric($sId))
{
$iReturn = (int) $sId;
}
return $iReturn;
}
foreach ($_POST as $sKey => $mValue)
{
$iId = getRecordIdFromKey($sKey);
if ($iId >= 0)
{
// fire up your delete query
}
}