2012-03-25 12 views
0

フォームは、sqlコマンドに関連するMySqlデータベースに格納されているページ(example.php)のすべてのデータを削除します。 提出が成功した後のフォーム動作ステータスメッセージ

コードの詳細

は次のとおりです。

if ((isset($_POST['id'])) && ($_POST['id'] != "")) { 
    $deleteSQL = sprintf("DELETE FROM users WHERE id=%s", 
         GetSQLValueString($_POST['id'], "int")); 


    mysql_select_db($database_example, $example); 
    $Result1 = mysql_query($deleteSQL, $example) or die(mysql_error()); 


    $deleteGoTo = "example.php"; 
    if (isset($_SERVER['QUERY_STRING'])) { 
    $deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?"; 
    $deleteGoTo .= $_SERVER['QUERY_STRING']; 
    } 
    header(sprintf("Location: %s", $deleteGoTo)); 
} 

$colname_deleterecord = "5"; 
if (isset($_GET['id'])) { 
    $colname_deleterecord = $_GET['id']; 
} 
mysql_select_db($database_example, $example); 
$query_deleterecord = sprintf("SELECT id, user_name, email, address FROM users WHERE id = %s", GetSQLValueString($colname_deletetrecord, "int")); 
$deleterecord = mysql_query($query_deleterecord, $example) or die(mysql_error()); 
$row_deleterecord = mysql_fetch_assoc($deleteecord); 
$totalRows_deleterecord = mysql_num_rows($deleterecord); 

<form id="form1" name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
    <label> 
     <input type="submit" name="Delete Record" id="Delete Record" value="Delete Record" /> 
    </label> 
    <input name="id" type="hidden" id="id" value="<?php echo $row_deleterecord['id']; ?>" /> 
    </form> 

は、どのように私はそれの後に、純粋なPHPの構文を使用して、同じページ上(「レコードが削除された」)のようなフォームアクションのステータスメッセージを表示しなければなりません送信されましたか?

ありがとうございます。

答えて

0

純粋なPHPで行うことはできません.AJAXを使用して行う必要があります。クライアント側のスクリプティングとサーバー側のスクリプトについて... urフォームが送信されると、他のPHPスクリプトにリダイレクトされます。サーバー側で... orederにuはちょうどAJAXを使用する必要があり、クライアント側でメッセージを公開する...成功した削除した後、私の見解

+0

私はすでに純粋なPHP構文に基づいていくつかのフォーム関連のWebアプリケーションにフォーム送信ステータスメッセージを統合しましたが、残念ながら私はこのケースで何かが不足しており、正常に動作しません。 – polarexpress

0

にのみpossibiltyのthats、あなたのステータスメッセージを作成し、

この

のように見えるように
// After mysql delete command 
$msg = urlencode("Record deleted"); 

編集しheaderコマンド

header(sprintf("Location: %s", $deleteGoTo . ?msg={$msg})); 

その後、私はあなたが同じページ上のフォームを提出していることがわかります、あなたが使用する必要はありません、あなたのページにメッセージを表示するこれまで場所を選択し、コード

echo isset($_GET['msg']) ? urldecode($msg) : ''; // This line will display the content of the variable $msg if it is set 

を置きますheader機能は、そのような場合には、あなたは第二の方法がより速くなるでしょう。この

$msg = "Record deleted"; 
echo isset($msg) ? $msg : ''; // This line will display the content of the variable $msg if it is set 

のように見えるように、ステータスメッセージと表示メッセージを変更します。

+0

最初の解決策は構文エラーです。構文エラーです。 '$ header '($ Location:%s"、$ deleteGoTo?msg = {$ msg})); ' 'はmysqlの結果の後に次のように定義されます:' mysql_select_db($ database_example、$ example);$ Result1 = mysql_query($ deleteSQL、$ example)またはdie(mysql_error()); $ msg = urlencode( "レコードが削除されました"); '一方、フォームが正常に送信された後、2番目のソリューションはページにステータスメッセージを表示しません。 – polarexpress

0

私はこの問題を最後に解決しました。

トリックは、クエリの文字列(キーと値のペア)をヘッダーの場所変数に代入するか、ヘッダーの場所の変数を関連する値で直接置き換えることです。

次に、関数とフォーム変数に関連付けられたクエリ文字列(キーと値のペア)を切り替えて、成功した送信後にフォームアクションステータスメッセージをページに表示するdivをラップします。

関連する問題