Php jquery动态添加有问题的行

Php jquery动态添加有问题的行,php,javascript,jquery,html,mysql,Php,Javascript,Jquery,Html,Mysql,我有一个表单,其中包含一个select字段id=projects,当它被更改时,使用js显示一个隐藏的select字段“task”,通过查询dB动态填充所选项目的任务。然后,用户可以输入在项目id、任务id组合上更新的小时数 echo '<div id="dynform"><div class="rowhours"><select id="projects" name="project">'; if(mysqli_num_rows($res)==0)

我有一个表单,其中包含一个select字段id=projects,当它被更改时,使用js显示一个隐藏的select字段“task”,通过查询dB动态填充所选项目的任务。然后,用户可以输入在项目id、任务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');
    });
});
现在,当我更改任何行的项目时,所有行的tasks select字段都会受到影响,我知道这是因为它们具有相同的Id

问题是我如何使它们具有不同的Id,并能够使用jquery以相同的方式单独使用它们。另外,到现在为止,我只是使用ifisset$_POST['submit']更新,我现在可以对多行使用什么

我这里有一个工作示例

我基本上是在寻找一个项目[]和任务[],我不知道如何使用jquery访问它,也不知道如何在表单上获取发布的值,一旦添加行时访问最后一个元素并更改id,提交更新dB

$(".rowhours).last().attr("id","newId");

您可以轻松地使用数组,只需将字段命名为project[]而不是project,然后使用$\u POST['project'][0]、$\u 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
}

你能分享showOther Function的代码吗?你缺少一个双引号。