在页面刷新之前不会删除数据

时间:2014-08-05 11:09:18

标签: php wordpress url-redirection

我有一个从表(当然还有相应的数据库)中删除数据的函数,但是,当我单击删除按钮时,它不会从表中删除数据(它会从表中删除)数据库虽然)。

如果我然后刷新页面(不是用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 }
  } ?>

3 个答案:

答案 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而不是从数据库中填充的? - 或者你如何填充成员数组?

您必须使用数据库中的相应信息刷新填充表格的内容 - 如果要删除所有内容,则无需任何操作。