我正在以输入值的ID列表的形式加载文章:
$idThisPost = "19999";
<input id="input_post_id" type="hidden" name="varPostId" value="<?php echo $idThisPost; ?>">
每篇文章都有一个删除按钮:
<form id="saveId" action="" method="POST" class="" autocomplete="off">
<input class="idsuser" type="hidden" name="save_post_value" value="<?php echo $userPosts; ?>">
<button type="submit" class="removeJiku save_post btn btn-danger">Remove</button>
</form>
当我们单击删除按钮时,它应该从阵列中删除其ID并在自定义字段上运行更新。运行以下命令会给我一个字符串Array
作为值。
if ($_SERVER['REQUEST_METHOD'] == "POST") {
if (isset($_POST['save_post_value'])) {
$userPostsQuery = array_diff($userPostsQuery, array($_POST['save_post_value']));
update_user_meta( $user_id, 'save_post', $userPostsQuery );
$removed = $_POST['save_post_value'];
unset($removed);
}
}
进行如下爆炸仍然会给我Array
而不是实际的ids
if ($_SERVER['REQUEST_METHOD'] == "POST") {
if (isset($_POST['save_post_value'])) {
$userPostsQuery = array_diff($userPostsQuery, array($_POST['save_post_value']));
$userPostsQuery = explode(',', $userPostsQuery);
update_user_meta( $user_id, 'save_post', $userPostsQuery );
$removed = $_POST['save_post_value'];
unset($removed);
}
}
答案 0 :(得分:1)
您的update_user_meta( $user_id, 'save_post', $userPostsQuery );
调用期望$userPostsQuery
是一个字符串,但是您要传递一个数组。您可以像这样将数组转换为逗号分隔的字符串:
update_user_meta( $user_id, 'save_post', implode(',', $userPostsQuery) );
并在声明$userPostsQuery
之后立即放置整个删除块,以便后续进程使用更新的数据库数据。
此外,if (isset($_POST['save_post_value'])) {
可以充分检查提交的数据,因此if ($_SERVER['REQUEST_METHOD'] == "POST") {
可以完全省略。
还有
$removed = $_POST['save_post_value'];
unset($removed);
只是摆脱了$removed
,也许您想要unset($_POST['save_post_value']);
,但我不确定是否完全需要它。