Php 在提交表单之后但在重定向和退出之前回显成功消息

Php 在提交表单之后但在重定向和退出之前回显成功消息,php,sql,forms,mysqli,echo,Php,Sql,Forms,Mysqli,Echo,不知道我在这方面工作了多长时间,但看起来什么都没用。我只想在重定向和退出之前输出一条成功消息 这就是我检查数据库成功/失败的原因 $sql = ("INSERT INTO test3 (test1, betvalue, bookmaker, status, aktiv) VALUES ('$bettype', '$betvalue', '$bookmaker', '$status', '$aktiv')"); $result = mysqli_query($conn, $sql);

不知道我在这方面工作了多长时间,但看起来什么都没用。我只想在重定向和退出之前输出一条成功消息

这就是我检查数据库成功/失败的原因

$sql = ("INSERT INTO test3 (test1, betvalue, bookmaker, status, aktiv) VALUES ('$bettype', '$betvalue', '$bookmaker', '$status', '$aktiv')");

    $result = mysqli_query($conn, $sql);
    if(mysqli_affected_rows($conn) >0 ) {
      echo "Wow it works";                    <-- Not working
      header("Location: nybonus.php");
      exit;
    } else {
      echo ("<div class='alert alert-danger' role='alert'>" . $sql . "</div><div class='alert alert-danger' role='alert'>" . mysqli_error($conn) . "</div>");
    }

如果成功的话,它不会输出任何回声,我试着用正确的刷新使它睡眠,以尝试输出消息,但它根本不起作用。有更好的方法吗?还有人能解释一下为什么它不会在报头之前回显并退出吗?

问题是当你使用报头时,它必须是第一个。 在页眉之前,您不能在屏幕上打印任何其他内容。 这与设置cookies时相同

因此,在您的情况下,您不能使用header执行重定向。 您可以使用元刷新

<meta http-equiv="refresh" content="0; url=http://www.somewebsite.com">

内容是在执行刷新之前等待的秒数。

问题是当您使用标题时,它必须是第一个。 在页眉之前,您不能在屏幕上打印任何其他内容。 这与设置cookies时相同

因此,在您的情况下,您不能使用header执行重定向。 您可以使用元刷新

<meta http-equiv="refresh" content="0; url=http://www.somewebsite.com">

内容是在执行刷新之前等待的秒数。

通过设置会话变量并在重新加载时检查该变量的状态,可以实现您想要的功能:

$message = '';
if(isset($_SESSION['success'])) {
    if($_SESSION['success'] == 'success') {
        $message = 'Success';
    }
}

$sql = ("INSERT INTO test3 (test1, betvalue, bookmaker, status, aktiv) VALUES ('$bettype', '$betvalue', '$bookmaker', '$status', '$aktiv')");
mysqli_query($conn, $sql);
if(mysqli_affected_rows($conn) > 0) {
    $_SESSION['success'] = 'success';             
    header('Location: nybonus.php');
    exit;
}
else {
    $_SESSION['success'] = 'fail';
    ..... 
}

<script>
$("#message").fadeOut(2000, function() {
    $("#message").fadeIn(0, function() {
        document.getElementById("message").innerHTML ="<br>";

    });
});
</script>

<div id="message">
    <?php echo $message; ?>
</div>

您是否可以通过设置会话变量并在重新加载时检查该变量的状态来实现所需的功能:

$message = '';
if(isset($_SESSION['success'])) {
    if($_SESSION['success'] == 'success') {
        $message = 'Success';
    }
}

$sql = ("INSERT INTO test3 (test1, betvalue, bookmaker, status, aktiv) VALUES ('$bettype', '$betvalue', '$bookmaker', '$status', '$aktiv')");
mysqli_query($conn, $sql);
if(mysqli_affected_rows($conn) > 0) {
    $_SESSION['success'] = 'success';             
    header('Location: nybonus.php');
    exit;
}
else {
    $_SESSION['success'] = 'fail';
    ..... 
}

<script>
$("#message").fadeOut(2000, function() {
    $("#message").fadeIn(0, function() {
        document.getElementById("message").innerHTML ="<br>";

    });
});
</script>

<div id="message">
    <?php echo $message; ?>
</div>

你必须更准确地解释你想要实现的目标。。。像第一步做这个第二步做这个等等。 之前我知道您在回显消息后询问如何重定向

现在请详细解释一下你想做什么,也许我能帮你

如果您的意思是用户只有一个页面1,他们提交了表单,然后在结果页面上显示消息?然后重定向

您只需要使表单操作与它们当前所在的页面具有相同的url路径


你明白我的意思吗?

你必须更准确地解释你想要实现的目标。。。像第一步做这个第二步做这个等等。 之前我知道您在回显消息后询问如何重定向

现在请详细解释一下你想做什么,也许我能帮你

如果您的意思是用户只有一个页面1,他们提交了表单,然后在结果页面上显示消息?然后重定向

您只需要使表单操作与它们当前所在的页面具有相同的url路径



你明白了吗?

没有代码来回显成功消息,这可能是错误的why@RGriffiths更新了它。假设您的$sql正常工作,它会回显结果,然后加载nybonus.php,这样您就看不到回显了。注释掉标题,看看它是否有效。@RGriffiths,是的,我这样做是为了检查它是否有效,当我没有标题时。但问题是我需要标题和退出,所以刷新后它不会再次发送。你不能将成功消息放在nybonus.php中吗?可能没有代码来回显成功消息why@RGriffiths更新了它。假设您的$sql正常工作,它会回显结果,然后加载nybonus.php,这样您就看不到回显了。注释掉标题,看看它是否有效。@RGriffiths,是的,我这样做是为了检查它是否有效,当我没有标题时。但问题是,我需要标题和退出,所以刷新它不会再次发送。你不能将成功消息放在nybonus.php中吗?这是可行的,但在meta标记之前,我放置了一个echo来显示成功消息,但它将消息放在空白页上,然后meta重定向回原始页,这是正确的。如何让它在同一个页面上而不是在空白页面上进行回显?这是可行的,但是在meta标记之前,我放置了一个回显以显示成功消息,但它将消息放置在空白页面上,然后meta重定向回正确的原始页面。如何让它在同一页上而不是空白页上进行回音?这可能是一种很好的方法,但我已经实现了代码,当我尝试触发它时,我根本没有收到成功或失败的消息。您是否包含会话\u start;在php的开始阶段?如果没有这一行,会话变量将无法访问。实际上不清楚您想要实现什么。您希望成功消息出现一段时间后消失吗?您可以使用setInterval在给定时间后隐藏元素。请参阅编辑-未完全测试,但提供了如何淡出消息并用空行替换的想法。但在我看来,这有点笨重。你会不会觉得直接进入一个单独的成功页面更容易,在那里你可以做你想做的一切,然后有一个按钮重定向回去,或者让它在一段时间后自动完成。这可能是一个很好的方法,但我已经实现了代码,我根本没有收到成功或失败的消息
当我尝试触发它时。你是否包括会话\u开始;在php的开始阶段?如果没有这一行,会话变量将无法访问。实际上不清楚您想要实现什么。您希望成功消息出现一段时间后消失吗?您可以使用setInterval在给定时间后隐藏元素。请参阅编辑-未完全测试,但提供了如何淡出消息并用空行替换的想法。但在我看来,这有点笨重。你会不会觉得直接进入一个单独的成功页面更容易,在那里你可以做你想做的一切,然后有一个按钮重定向回去,或者让它在一段时间后自动完成。