0

我知道您不能在 html 中嵌套表单。因此,我需要帮助来制作以下功能。

我有一个复选框列表:

<form action="addAll.php" method="post">
  <ul>
    <li><input type="checkbox" name="boxes[]" value="1"> <a href="#">No. 1</a></li>
    <li><input type="checkbox" name="boxes[]" value="2"> <a href="#">No. 2</a></li>
    <li><input type="checkbox" name="boxes[]" value="3"> <a href="#">No. 3</a></li>
    <li><input type="checkbox" name="boxes[]" value="4"> <a href="#">No. 4</a></li>
  </ul>
  <input type="submit" value="Add all">
</form>

单击提交按钮“全部添加”时,会收集这些值并将其发送到 addAll.php 文件。到目前为止,一切都很好。

列表中有链接,如图所示。现在想要的功能是,当我单击链接时,表单将提交到 addAll.php 之外的另一个页面。
所以实际上,我需要四个提交按钮来代替每个链接,而不是链接,每个链接都会将表单提交到他们自己的文件而不是 addAll.php。

我只需要能够保存用户在链接之间导航并再次返回时检查的复选框,直到他最终在某个时候单击“全部添加”提交按钮。因此,我想在单击链接后将复选框用户一起带到新页面,因此它已保存,因此我可以通过查看 POST 数据重新检查复选框,如果他稍后返回单击“全部添加” .

有解决方案吗?

4

1 回答 1

1

我不建议做这样的事情,但对我来说,这似乎是我能想到的最接近不使用 javascript 的解决方案。

addAll.php

...
function redirect($url) {
    $query_string = urlencode('?boxes=['.implode(',', $_POST['boxes']).']');
    $base_url = some_awkward_way_of_getting_the_base_url();
    $url_full = $url_base.$url;
    header('Location: '.$url_full.$query_string);
}

function alternative($url) {
    $_SESSION['boxes'] = $_POST['boxes'];
    $base_url = some_awkward_way_of_getting_the_base_url();
    $url_full = $url_base.$url;
    header('Location: '.$url_full);
}

if (isset($_POST['submit_nr1']))
    redirect('nr1.php');

else if (isset($_POST['submit_nr2']))
    redirect('nr2.php');

else if (isset($_POST['submit_nr3']))
    redirect('nr3.php');

else if (isset($_POST['submit_nr4']))
    redirect('nr4.php');

else if (isset($_POST['submit_all']))
    handle_accordingly();
...

或者,您可以根据不同的情况让 addAll.php 包含/需要不同的文件,而不是进行标头重定向。

复选框.php

...
<form action="addAll.php" method="post">
  <ul>
    <li>
        <input type="checkbox" name="boxes[]" value="1">
        <input type="submit" name="submit_nr1" value="No. 1"/>
    </li>
    <li>
        <input type="checkbox" name="boxes[]" value="2">
        <input type="submit" name="submit_nr2" value="No. 2"/>
    </li>
    <li>
        <input type="checkbox" name="boxes[]" value="3">
        <input type="submit" name="submit_nr3" value="No. 3"/>
    </li>
    <li>
        <input type="checkbox" name="boxes[]" value="4">
        <input type="submit" name="submit_nr4" value="No. 4"/>
    </li>
  </ul>
  <input type="submit" name="submit_all" value="Add all">
</form>
...

免责声明:我已经有一段时间没有编写 PHP 了,这未经测试,但至少应该说明一个可能的解决方案。

于 2013-08-28T23:19:40.380 回答