2016-09-14 10 views
3

誰かが私の問題の別の解決策を持っていますか?最初のフォームsubmit insert rowその後の投稿同じ行を更新する

私の送信ボタンを最初にクリックすると、その行をMYSQLデータベースに挿入します。しかし、フォームはエラーの入力を検証するので、エラーが見つかると、ユーザーは送信ボタンを再度クリックする必要があります。今私はデータベースの行を更新したいと思います。

これを達成するためにセッション変数を使用していましたが、ウェブサイトがRealex支払いゲートウェイを使用しているため、今はできません。このコードがサイトにあるため、支払いが成功したときにセッションを解除する方法はありません。だからここ

は私が持っていたものです:

if(!isset($_SESSION['jid']))  
{     
$sql = "INSERT INTO ..."; 
      $result = $db->query($sql); 
      if($result === false) 
       sql_failure_handler($sql, $db->error); 
      $jid = $db->insert_id; 
      $_SESSSION["jid"] = $jid; 
     } 
     else  
     { 
      $sql = "UPDATE ... WHERE ID = '$_SESSION['jid']"; 
      $result = $db->query($sql); 
      if($result === false) 
       sql_failure_handler($sql, $db->error); 
     } 
     } 

このコードは、私は必要なもののアイデアを与えることです。

if(empty($_POST['jid'])) // insert on first click of one of the buttons 
     {     
      $sql = "INSERT INTO table ..."; 
      $result = $db->query($sql); 
      if($result === false) 
       sql_failure_handler($sql, $db->error); 
      $jid = $db->insert_id; 
     } 
     else 
     { 
      $sql = "UPDATE table SET ... WHERE ID = '" . $db->real_escape_string($_POST['jid']) . "'"; 
      $result = $db->query($sql); 
      if($result === false) 
       sql_failure_handler($sql, $db->error); 
     } 

をして、隠れ変数を持っていますが、これは動作しますかわからない。

私はポスト変数を使用して考えていました。 jid値を最初に設定するjqueryですか?

答えて

0

隠しフィールドは適切なオプションです。 PHPで

<input type="hidden" name="jid" value="" id="jid"> 

は、フォーム内の空の隠しフィールドを含めます。 $ _POST [「JID」]が空白の場合、新しい行を挿入し、新しく作成された行のIDで応答を返す:クライアントで

$sql = "INSERT INTO table..."; 
$result = $db->query($sql) or die('Errant query: '.$sql); 
$newid = $db->insert_id; 
header('Content-type: application/json'); 
echo '{"message":"new field added", "id":"'.$newid.'"}'; 

を、成功した後の場合。場合は、無挿入するとIDが既にDBに存在するかどうかを確認し、PHPで

:以降の記事は今JID

別のオプションを持つことになります

$('#jid').val(response.id) 
につまり、あなたの隠されたフィールドの値を更新はい更新。

$sql = "SELECT id FROM table WHERE id = '$jid' LIMIT 1"; 
$result = $db->query($sql) or die('Errant query: '.$sql); 
$row_cnt = $result->num_rows; 

if($row_cnt > 0){ 
    UPDATE 
} 
else{ 
    INSERT 
} 
関連する問題