在查看了关于 SO 和其他地方的各种类似问题后,我有一种可怕的感觉,我想做的事情是不可能的,但是就这样。
我有一个页面是文本输入行的表格。用户在每一行输入信息,然后将数据提交到一个单独的文件中,从而创建一个 PDF。
问题是我需要用户能够随意向表中添加行,因为数据量可能会有所不同。
[在你去那里之前,我需要指出我不能使用 Javascript 来做任何事情——我知道在 JS 中很容易做到,但页面需要是可访问的。]
这是一个非常简化的版本,我只是拼凑起来(希望)说明这一点:
<?php
if (filter_has_var(INPUT_POST, 'add_rows')) {
$howmanyrows = filter_input(INPUT_POST, 'howmanyrows', FILTER_SANITIZE_NUMBER_INT);
//get all the data from table and put it in an array,
//then add 5 (or however many) new rows to said array.
}
else if (filter_has_var(INPUT_POST, 'send_data')) {
//get table data, add to session and redirect to other page with a header()
}
?>
<html>
<form action="" method="POST">
<table>
<?php //table rows added using an array of data
foreach ($data as $d): ?>
<tr><td><input type="text" value="<?php echo $d; ?>"></td></tr>
<?php endforeach; ?>
</table>
<input type="text" name="howmanyrows" value="5">
<input type="submit" name="add_rows">
<input type="submit" name="send_data">
</form>
...
</html>
如您所见,目前我有一个笨拙的设置,其中只有一个表单包含整个页面,并将页面提交给自己。根据单击的按钮,添加新行或将数据提交到 PDF 创建页面。
这并不理想,原因有很多。我真正想做的是有两个单独的表格,或嵌套表格。但是前者不允许将输入值提交给两者,而后者显然是错误的形式(没有双关语)并且不起作用。
有没有可能让它做我想做的事情?有什么建议可以采取不同的方式吗?