2016-07-14 21 views
0

項目のデータベースを用意しましょう。各項目の符号なし整数はid(1,2、..)です。次に、すべてのアイテムを印刷し、新しいアイテムを追加できるページがあります(一時的に - javascriptのみで、データベースにはありません)。 javascript関数を呼び出した後のPHP変数のインクリメント

  • 項目
  • これらの項目のすべての後にボタン「項目を追加」(このボタンがある

    1. 項目
    2. アイテム:私たちは、このページに到達すると、このような項目を印刷しますonclickjavascript function)。

      1. 項目
      2. 項目
      3. 項目
      4. 項目
      5. 項目これを実行することが可能であるどのよう

      :私はその倍のボタンをクリックすると、リストは、この方法を変更する必要があります?初めてデータベースからすべてのアイテムを投稿するとき、私はidを知っているので、phpは最高のものを覚えています。しかし、項目を作成する必要がある場合、phpは引数を渡します(id変数はプリインクリメント付き)javascript functionに新しい要素を作成して印刷します。しかしAdd itembuttonがクリックされるたびに、最高のIDを持つphp variable3から4に増加している - この変数は一時的に増加している - Add itembuttonが複数回クリックされたときに、それぞれの新しいアイテムが多数4を持っています。

      一時的にこの変数をインクリメントする方法はありますか?

      コード

      <script type="text/javascript"> 
          function addChoice(last_id) 
          { 
           var choice = document.createElement("input"); 
           choice . setAttribute("type", "text"); 
           var p = document.createElement("p"); 
           p . innerHTML = last_id + "."; 
           var form = document.getElementById("new_questions"); 
      
           form . appendChild(p); 
           form . appendChild(choice); 
      
           for(var i = 0; i < 1; i ++) 
           { 
            var br = document.createElement("br"); 
            form . appendChild(br); 
           } 
          } 
      </script> 
      <?php 
          $subjects = $mysql->query("SELECT * FROM subjects"); 
      
          $questionNr = $_POST["question"]; 
          $question = $mysql->query("SELECT * FROM questions WHERE question_number='$questionNr';"); 
          $row = mysqli_fetch_assoc($question); 
      
          $choices = $mysql->query("SELECT * FROM choices WHERE question_number='$questionNr';"); 
      ?> 
      
          <main> 
           <div class="container"> 
            <form id="quizzer_edit" method="post" action="process_edit.php"> 
             <label>Subject</label> 
             <select name="subject"> 
              <?php while($rowSubject = mysqli_fetch_assoc($subjects)) { ?> 
               <option <?php if($row["subject"] == $rowSubject["shortcut"]) echo 'selected="selected"' ?> value=<?php echo $rowSubject["shortcut"] ?>><?php echo $rowSubject["name"] ?></option> 
              <? } ?> 
             </select><br> 
             <p><?php echo $row["text"]; ?></p> 
             <input type="text" name="new_question"/> 
             <?php while($row = mysqli_fetch_assoc($choices)) { ?> 
              <p><?php echo $row["id"].".".$row["text"]; ?></p> 
              <input type="text" name=<?php echo $row["id"]; $last_id = $row["id"];?>/> 
              <strong>Correct </strong> 
              <input type="checkbox" name="is_correct"/> 
             <?php } ?> 
      
             <div id="new_questions"></div> 
             <br> 
             <input type="button" value="Add choice" onclick="addChoice(<?php echo ++$last_id; ?>)"/><input type="submit" value="Submit"/> 
            </form> 
           </div> 
          </main> 
      <?php } ?> 
      
    +1

    を設定:)あなたに権利を取得します:私は、この変数に値を代入しなければならなかったファイルの最後に

    あなたは、動的なテキストボックスのような何かをしたい多くの高速 – KRONWALLED

    +0

    に答える? – C2486

    +0

    @Rishi私はテキストボックスをコードで実行していますが、必要なのは、javascript関数を起動するボタンをクリックするたびに変数のインクリメントされた値を保存することです。 – scarface

    答えて

    0

    私はすでにそれを行っている:

    私は機能addChoice()の宣言の前に新しいjavascriptの変数last_idを宣言しなければなりませんでした。あなたはいくつかのコードを表示する必要が

    <script type="text/javascript"> last_id = <?php echo $last_id ?>; </script>

    そして私はonclick="addChoice(++last_id)"

    0

    私は、あなたが呼び出すJavaScriptの関数は結果を表示するページ内にあると仮定します。

    もしそうなら、あなたは二つのフィールド(関数の外で宣言された変数)、その店舗使用することができます

    1. をこれが初めてです、JS-機能は次の番号(firstRun)
    2. と呼ばれていますエントリ(カウンタ)の最初の呼び出しで

    に与えるために、あなたは引数をingoring、あなたは、単にカウンタをインクリメントし、それを使用firstRun == falseの連続通話で、PHPによって与えられた引数にカウンタを設定します。

    +0

    PHPの変数の内容を保存する方法はありますか? javascript関数の外でjavascript変数に? – scarface

    関連する問題