2016-12-19 12 views
1

アイテムが削除されたときにアプリケーションを取得したい場合は、messegeをポップアップして別のページにリダイレクトします。私はリダイレクトのためのポップアップとPHPヘッダのjavasciptを使用しました。今はそのことだけですか、ポップアップかリダイレクトが最初に表示されるかによって異なります。どのように私はこれを修正するのですか?sqlが完了したときにリダイレクトとポップアップ

<?php 
session_start(); 
require_once('../../includes/mysql_config.php'); 

$id = isset($_SESSION['id']) ? $_SESSION['id'] : header('location: ../../login.php'); 
$Cursist = mysqli_query($con, "SELECT id FROM users WHERE id =".$_SESSION['id']); 
if(!$Cursist){ 
    header('location: ../login.php'); 
} 

$test = $_GET['id']; 

$sql = "DELETE FROM cursus WHERE id = $test"; 
$result = mysqli_query($con, $sql); 
if ($result) { 
    echo "<script type='text/javascript'>alert('Verwijdert!')</script>"; 
    header("Location: ../cursussen.php?destoyed=true&destroyed_id=".$_GET['id']); 
}else { 
    echo "mislukt"; 
} 
?> 

答えて

1

ヘッダーが機能しない前にsometrhingを送信した場合。クライアントにsometrhingを送信する前にヘッダーのみを使用できます。

通常のHTMLタグ、ファイルの空白行、またはPHPのいずれかによって、実際の出力が送信される前にheader()を呼び出す必要があることに注意してください。 include、require、関数、または別のファイルアクセス関数でコードを読み込み、header()が呼び出される前に空白または空行が出力されるのは、非常に一般的なエラーです。単一のPHP/HTMLファイルを使用する場合も同じ問題があります。

http://php.net/manual/en/function.header.php

あなたはJavaScriptで行うことができますが、ユーザーがJavaScriptを無効にしている可能性があるため、これはお勧めできません:

echo "<script type='text/javascript'>"; 
echo "alert('Verwijdert!')"; 
echo "document.location.href='index.html'"; 
echo "</script>"; 

最良の方法は、セッションおよびヘッダを使用することで、あなたはVARを保存することができますセッションが終了し、varが真のときにメッセージを表示し、メッセージを表示するとセッションを削除します。var

delete.php

$_SESSION['deleted'] = true; 
header("Location: index.php); 

のindex.php

<?php if($_SESSION['deleted']){ ?> 
<?php unset($_SESSION['deleted']) ?> 
<div>Item was deleted</div> 
<?php } ?> 
+0

おかげで、第二の方法は、正常に動作します使用しました! – marijn

0

さて、問題は、リダイレクトがすぐに新しいページに移動するので、古いページ上の任意のJavaScriptが無関係になることです。リダイレクトする前に遅延を使用して、javascriptアラートを表示できるようにすることができます。

そうでない場合は、リダイレクト先のページに送信する変数を導入し、この変数を使用してjavascriptポップアップをトリガーします。

関連する問題