我有一个从表(当然还有相应的数据库)中删除数据的函数,但是,当我单击删除按钮时,它不会从表中删除数据(它会从表中删除)数据库虽然)。
如果我然后刷新页面(不是用ctrl + r,因为它要求我重新提交表单),它就不见了。
这似乎是某种缓存,我想知道是否有某种解决方法,比如几秒后重新加载页面。我已经尝试过PHP的header() - 函数,但它似乎没有用。
<input type=hidden name="member_email" value="<? echo $member['email']; ?>"/>
<?php
$email = $member['email'];
if(isset($_POST['fjern_kursist'])) {
/*delete participant from db*/
$delete_query = "DELETE from ";
$delete_query .= $wpdb->prefix . "member_data ";
$delete_query .= "WHERE email = '" . $_POST['member_email'] . "' AND course_id = '" . get_the_ID() . "'";
$wpdb->query( $wpdb->prepare( $delete_query ));
header( "refresh:5;url=http://kursus.billetten.dk" );
}?>
</td>
我使用Google作为占位符,在完美的情况下,我转到当前页面/网址。 我在标题中做错了什么?我也尝试了以下标题,但这不起作用:
header( "refresh:5;url=http://google.com" );
我做错了什么?
编辑:完整的表格:
if ( current_user_can( 'manage_options' ) ) { ?>
<h3>Deltagere</h3>
<table class="table table-hover table-bordered">
<thead>
<tr>
<th>Fornavn</th>
<th>Efternavn</th>
<th>Email</th>
<th>Virksomhed</th>
<th>Fjern</th>
</tr>
</thead>
<?php if ($members_array){
foreach ($members_array as $member) { ?>
<tr>
<td><?php echo $member['firstname'] ?></td>
<td><?php echo $member['lastname'] ?></td>
<td><?php echo $member['email'] ?></td>
<td><?php echo $member['company'] ?></td>
<form id="cancel_form_admin" method="POST" action="">
<td><button type="submit" class="btn btn-danger" name="fjern_kursist"/>
<i class="fa fa-trash-o"></i>
</button>
<input type=hidden name="member_email" value="<? echo $member['email']; ?>"/>
<?php
$email = $member['email'];
if(isset($_POST['fjern_kursist'])) {
/*delete participant from db*/
$delete_query = "DELETE from ";
$delete_query .= $wpdb->prefix . "member_data ";
$delete_query .= "WHERE email = '" . $_POST['member_email'] . "' AND course_id = '" . get_the_ID() . "'";
$wpdb->query( $wpdb->prepare( $delete_query ));
header( "refresh:5;url=http://kursus.billetten.dk" );
}
?>
</td>
</form>
</tr>
<?php }
} ?>
答案 0 :(得分:1)
我认为问题是您在SELECT查询后发送DELETE查询。难道你不能把if(isset($_POST
部分放在标题/模型中(不是这么大的WP用户)吗?这样就可以在从数据库完成SELECT之前删除用户,存储在变量等中。
答案 1 :(得分:1)
代码从上到下运行。
因此,您的代码会为页面生成html,然后检查是否有任何要删除的内容。
所以当有东西要删除时,在使用未删除的数据构建页面之后删除它。
// First check for deletes
$email = $member['email'];
if(isset($_POST['fjern_kursist'])) {
/*delete participant from db*/
$delete_query = "DELETE from ";
$delete_query .= $wpdb->prefix . "member_data ";
$delete_query .= "WHERE email = '" . $_POST['member_email'] . "' AND course_id = '" . get_the_ID() . "'";
$wpdb->query( $wpdb->prepare( $delete_query ));
}
// Now run the unshown code that loads $members_array from the database
// now run the html page building that used $members_array
// that is created from any remaining member on the database
答案 2 :(得分:-2)
表可能是从$ _POST而不是从数据库中填充的? - 或者你如何填充成员数组?
您必须使用数据库中的相应信息刷新填充表格的内容 - 如果要删除所有内容,则无需任何操作。