web-dev-qa-db-fra.com

Publier un tableau à partir du formulaire

J'ai un formulaire sur ma page avec un tas d'entrées et des champs cachés, on m'a demandé de transmettre ces données par le biais d'un "tableau", je ne suis pas sûr de savoir comment le faire, 

Voici un extrait de ce que je fais en ce moment

<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;" />

Dans mon process.php im appelant alors les données en tant que telles ...

$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'];

Y a-t-il un moyen de le poster en tant que tableau? Est-ce que ma méthode est une mauvaise pratique? 

16
Liam

donnez à chaque entrée un nom comme

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

puis en php 

 $_POST['data'];

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

sera un tableau

41
mcgrailm

Lorsque vous publiez ces données, elles sont stockées sous forme de tableau dans $ _POST. 

Vous pouvez éventuellement faire quelque chose comme: 

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

et 

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

mais je ne vois pas le point. peut-être obtenir plus de précisions?

5
David Houde

En fait, vous le faites déjà. Lorsque le formulaire est soumis, les données sont transmises via un tableau de publication ($ _POST). Votre process.php reçoit ce tableau et redistribue ses valeurs sous forme de variables individuelles.

4
Allen

Pourquoi l'envoyez-vous par la poste si vous l'avez déjà du côté serveur (PHP)?

Pourquoi ne pas simplement sauvegarder le tableau dans la variable $_SESSION afin de pouvoir l'utiliser lorsque le formulaire est soumis, ce qui pourrait le rendre plus "sécurisé" car le client ne peut pas modifier les variables en modifiant la source. 

Cela dépendra de la façon dont vous voulez {vraiment _.

0
Naina

Vous pouvez utiliser la fonction intégrée:

extract($_POST);

cela créera une variable pour chaque entrée dans $_POST.

0
Manunich