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

ループ内に form タグを配置する必要があります。現在、すべてのレコードが 1 つのフォームに表示され、どの項目を選択しても、最後の値のみが取得されます。別の代替ソリューションは、GET メソッドを使用して、番号/名前をクエリ文字列として渡すことです。

于 2012-11-27T06:50:59.447 に答える