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>
ご覧のとおり、現時点では、ページ全体を含むフォームが1つだけで、ページをそれ自体に送信するという不格好な設定があります。クリックされたボタンに応じて、新しい行が追加されるか、データがPDF作成ページに送信されます。
多くの理由から、これは理想的ではありません。私が本当にやりたいのは、2つの別々のフォーム、つまりネストされたフォームを持つことです。しかし、前者は入力値を両方に送信することを許可せず、後者は明らかに悪い形式(しゃれは意図されていません)であり、機能しません。
これを私がやりたいことをさせることは可能ですか?それについて行くための別の方法についての提案はありますか?