0

選択フィールド id="projects" を含むフォームがあり、変更すると (js を使用して) 非表示の選択フィールド 'タスク' が表示され、dB を照会して選択したプロジェクトのタスクが動的に入力されます。ユーザーは、選択した proj_id、task_id の組み合わせで更新される時間を入力できます。

echo '<div id="dynform"><div class="rowhours"><select id="projects" name="project">';
if(mysqli_num_rows($res)==0)
    echo '<option>No Projects assigned</option>';
else{
    echo '<option value="0">Project - Choose one</option>';
    while (list($proj_id, $title) = mysqli_fetch_row($res))
    {
        echo "<option value=$proj_id>$title</option>";   
    }
}

echo '</select></div><input type="button" id="add"></div>';
<select name="task" class="tasks" onchange="showOther(this, 'new');" onmouseover="showOther(this, 'new');"></select><br>

function showOther(fieldObj, otherFieldID)  //Function displays text box for creating a new task on Addhours.php 
            {                                       //for the selected project when "Enter New Task" option chosen
                var fieldValue = fieldObj.options[fieldObj.selectedIndex].value;
                var otherFieldObj = document.getElementById(otherFieldID);

                otherFieldObj.style.visibility = (fieldValue=='other') ? '' : 'hidden';

                return;
            }

「行を追加」ボタンを追加すると、同じフォームが何度も生成されます。

<input type="button" value="Add Row" id="add">

jquery used to add rows:  $(document).ready(function () {
    $('#add').click(function () {
        $('.rowhours').clone().appendTo('#dynform');
    });
});

任意の行のプロジェクトを変更すると、すべての行のタスク選択フィールドが影響を受けます。これは、ID が同じであるためです。

問題は、それらに異なる ID を持たせ、jquery を使用して同じ方法で別々に使用できるようにする方法です。また、今のところ、if(isset($_POST['submit'])) を使用して更新するだけです。複数の行に何を使用できますか?

ここに実例がありますhttp://fracktal.in/tms/addhours.php

私は基本的に、jqueryを使用してアクセスする方法や、フォーム送信で投稿された値を取得してdBを更新する方法がわからないプロジェクト[]とタスク[]を探しています

4

2 に答える 2

0

rowhours最後の要素へのアクセスを追加してIDを変更したら

$(".rowhours).last().attr("id","newId");
于 2013-06-29T09:48:34.667 に答える
0

配列は簡単に使用できます。フィールドに project[] (project ではない) という名前を付けてから、$_POST['project'][0]、$_POST['project'][1] などでアクセスします。

$total = count($_POST['project']);

foreach($_POST['project'] as $num=>$project) {
  // do your code here, send to DB or whatever
  // $project contains value of input (or select) and $num contains number of row
}
于 2013-06-29T11:24:28.097 に答える