2016-05-16 8 views
0

私は自分のワードプレスサイトで使用するカスタムフォームを設定しています。私がしたいのは、その提出物のAUTO_INCREMENT IDを取得し、フォームが提出されたときにJavascriptのクッキーに渡すことです。現在、IDは動作していますが、フォームが送信されるまでIDが取得されないため、フォームが送信された直後に変数をCookieに渡す方法がわかりません(現在は提出する必要があります) IDを持つクッキーが作成される前に2回フォームが作成され、それより後ろのサブミットがあるため、その1つの数字が低くなる)。ここでフォームの送信時にJavascriptクッキーにPHP変数を渡すには?

は、私が現在持っているものです。

<?php 
if(isset($_POST["submit"])) { 
    $name = $_POST['full_name']; 
    $city = $_POST['city']; 
    $state = $_POST['state']; 
    $email = $_POST['email']; 

    $wpdb->insert(
     'reps', 
     array(
      'name' => stripslashes($name), 
      'city' => stripslashes($city), 
      'state' => stripslashes($state), 
      'email' => stripslashes($email) 
     ) 
    ); 

    $lastid = $wpdb->insert_id; 
} 
?> 
<script> 
$('#dealer-form').submit(function() { 
    var repID = '<?php echo $lastid ?>'; 
    setCookie('ID', repID); 
}); 
</script> 

私はこのコードが第二の提出に取り組んでいます(変数が最初の提出に値がないので)、それがあるため、IDが背後にある1つの数で述べたように変数値を再割り当てする前に、前のサブミッションのIDを取得します。

+0

'' JSON'文字列化() ''データattributes' 。また、IDのカウンターを保持する目的に役立つiframeをページ上に配置することもできます。あなたはそこからそれを参照することができます。 –

答えて

1

PHPはサーバー側のスクリプト言語で、データがブラウザに送信される前に実行されます。クライアント側のスクリプト言語であるJavaScriptは、ブラウザでスクリプトが検出されるとすぐに実行されます。

あなたのアプローチは、フロントエンドとバックエンドの間のこの分離を忘れています。あなたが何をしようとして達成するために

、単に出力setCookieコールを使用すると、PHPにフォームを提出しました:

<?php 
    if(isset($_POST["submit"])) { 
     $name = $_POST['full_name']; 
     $city = $_POST['city']; 
     $state = $_POST['state']; 
     $email = $_POST['email']; 

     $wpdb->insert(
      'reps', 
      array(
       'name' => stripslashes($name), 
       'city' => stripslashes($city), 
       'state' => stripslashes($state), 
       'email' => stripslashes($email) 
      ) 
     ); 

     $lastid = $wpdb->insert_id; 

     printf('<script>setCookie("ID", %d);</script>', $lastid); 
    } 
?> 
+0

これは完璧に働いた、ありがとう! – user13286

+0

PHPの 'setcookie()'関数を使ってそれを設定してみませんか? – Barmar

関連する問題