我有以下按钮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
执行查询 - 现在我正在尝试回显一条消息,仅用于测试目的。这是我对此功能的所有代码。
答案 0 :(得分:0)
你忘记了php标签。
<input type='submit' name='delete_<?php echo $id ?>' value='x' title='Delete message' />
答案 1 :(得分:0)
首先,看看你在显示的是什么:
<input type='submit' name='delete_$id' value='x' title='Delete message' />
e.g。名称应/必须显示为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-Calls删除相应的消息,因为单个页面上的多个表单不是一个好方法,并且在发布问题之前在AJAX上进行一些良好的搜索< / p>
答案 2 :(得分:0)
正如在提到的评论中,你必须遍历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
}
}