0

我有一个用于动态添加/删除项目的循环,但是每次只删除最后一个项目。我可以添加项目就好了。

我不知道为什么无论我尝试从 add_friends 和 register_tasks 中删除哪些项目,只有最后一个项目被删除。当我回显 $_POST['task_name'] 时,它始终是列表中的最后一项,而不是我选择的一项(当然,除非我选择了最后一项)。

这是表格

 <center><h2>Create Event</h2></center>
        <form method="post"> 
        <?
        $form = new common_functions();

        if($form->check_saved_forms($my_username, "event") == TRUE){
            $this->existing_forms(); //allow the user to select existing forms that they have created
       }

        ?>               
        <tr><td>Title:</td><td><input type="text" width="20%" name="event_title" value="<? echo $form_data[0]; ?>" /></td></tr>
        <tr><td>Details:</td><td><input type="text" width="20%" name="event_details" value="<?echo $form_data[1]; ?>" /></td></tr>
        <tr><td>Date:</td><td><input type="text" width="20%" name="event_date" id="event_date" value="<? echo $form_data[2]; ?>" /></td></tr>
        <tr><td> <input type="submit" name = "submit_event" id = "lOBut" value="Create Event" /></td></tr>  
        </table>

    <?
    //this is the section giving me trouble
    $form->add_friends($added_friends); 
    $form->register_tasks($tasks,$nums); 
    ?>
    </form>

add_friends 和 register_tasks 都通过文本框动态添加和删除好友/任务,并显示添加项目的列表。用户可以删除项目,但是,现在只有最后一个项目是可移动的,我不知道为什么。

这是寄存器(add_friend 是相同的,但标记不同)

function register_tasks($tasks,$nums){
    <table>    
    <td><input type="textbox" size="50" name="register_description"/> </td></tr>
    <td><input type ="textBox" name="register_num" /> </td>
    <td><input type="submit" name="add_register_tasks" value="Add"/></td></tr>
    </table>
    <?
    if(count($tasks) > 0){
        ?>
        <table>
        <tr><td><b>Registration Item Description</b></td><td><b># Of Available Spots</b></td></tr><br>
        <?
        foreach (array_combine($tasks, $nums) as $task => $task_num){
            ?>
            <tr><td><? echo $task; ?></td><td><? echo $task_num; ?></td>
            <td><input type="submit" name="remove_task" value="Remove"/></td>
            <td><input type="hidden" name="task_name" value="<? echo $task; ?>"/>
            <td><input type="hidden" name="task_num" value="<? echo $task_num; ?>"/></td></tr>

            <?
        }
        ?></table><?
    }
4

1 回答 1

0

您需要将表单标签放在循环内。现在发生的情况是所有记录都显示在一个表单中,无论您选择什么项目,它都只取最后一个值。另一种替代解决方案是使用 GET 方法并将数字/名称作为查询字符串传递。

于 2012-11-27T06:50:59.447 回答