web-dev-qa-db-ja.com

フォームから配列を投稿する

たくさんの入力といくつかの非表示フィールドを含むフォームがページにあります。このデータを「ポスト配列」に渡すように頼まれました。

現時点で私がしていることの断片

<form enctype="multipart/form-data" action="process.php" method="POST"> 
...
more inputs
...

<!-- Hidden data -->
<input type="hidden" name="TimeToRenderHoursInput" value="<?php echo $RenderHours; ?>" />
<input type="hidden" name="TimeToRenderDaysInput" value="<?php echo $RenderDays; ?>" />
<input type="hidden" name="TimeToRenderYearsInput" value="<?php echo $RenderYears; ?>" />
<input type="hidden" name="ContentMinutesInput" value="<?php echo $ContentMinutes; ?>" />
<input type="hidden" name="ContentMinutesSelector" value="<?php echo $ContentMinutesSelector; ?>" />
<input type="hidden" name="PriorityInput" value="<?php echo $Priority; ?>" />
<input type="hidden" name="AvgFrameRenderTimeInput" value="<?php echo $AverageFrameRenderTime; ?>" />
<input type="hidden" name="AvgFrameRenderTimeSelector" value="<?php echo $AverageFrameRenderSelector; ?>" />
<input type="hidden" name="CoresInTestInput" value="<?php echo $CoresInTest; ?>" />
<input type="hidden" name="EstPriceInput" value="<?php echo $EstPrice; ?>" />
<!-- End hidden -->

<input type="image" src="http://www.venndigital.co.uk/testsite/renderbutton/_includes/images/button/submit.jpg" alt="Submit" value="Submit" style="border:0!important;" />

私のprocess.php imでは、そのようなデータを呼び出しています...

$first_name = $_POST['first_name']; 
$company_name = $_POST['company_name']; 
$email_from = $_POST['email']; 
$address = $_POST['address']; 
$postcode = $_POST['postcode']; 
$RenderHours = $_POST['TimeToRenderHoursInput'];
$RenderDays = $_POST['TimeToRenderDaysInput'];
$RenderYears = $_POST['TimeToRenderYearsInput'];
$ContentMinutes = $_POST['ContentMinutesInput'];
$ContentMinutesSelector = $_POST['ContentMinutesSelector'];
$Priority = $_POST['PriorityInput'];
$AverageFrameRenderTime = $_POST['AvgFrameRenderTimeInput'];
$AverageFrameRenderSelector = $_POST['AvgFrameRenderTimeSelector'];
$CoresInTest = $_POST['CoresInTestInput'];
$EstPrice = $_POST['EstPriceInput'];

配列として投稿する方法はありますか?とにかく私の方法は悪い習慣ですか?

18
Liam

各入力に配列形式の名前を付けます。

<input type="hidden" name="data[EstPriceInput]" value="" />

次に、in PHP $_POST['data'];は配列になります。

  print_r($_POST);         // print out the whole post
  print_r($_POST['data']); // print out only the data array
44
mcgrailm

そのデータを投稿すると、$_POSTに配列として保存されます。

オプションで次のようなことができます:

<input name="arrayname[item1]">
<input name="arrayname[item2]">
<input name="arrayname[item3]">

次に:

$item1 = $_POST['arrayname']['item1'];
$item2 = $_POST['arrayname']['item2'];
$item3 = $_POST['arrayname']['item3'];

しかし、私はポイントを見ることができません。

8
David Houde

実際のところ、あなたはすでにそれを行っています。フォームが送信されると、データは投稿配列($ _POST)を介して渡されます。 process.phpはその配列を受け取り、その値を個々の変数として再配布しています。

5
Allen

サーバー(PHP)側に既にあるのに、なぜポストを通して送信するのですか?

配列を$_SESSION変数に保存して、フォームの送信時に使用できるようにすると、クライアントがソースを編集して変数を変更できなくなるため、より安全になります。

本当にどうしたいかに依存します。

1
NJInamdar

組み込み関数を使用できます。

extract($_POST);

$_POSTの各エントリに変数を作成します。

0
Manunich