PHP, HTML генерировать форму из нескольких переменных - PullRequest
0 голосов
/ 20 июля 2010

Мне нужно создать HTML-форму с различными скрытыми переменными. Однако «проблема» в том, что существует много переменных. Например,

   $siteId = getValue("siteId", $localurl);
   $itemid = getValue("itemid", $localurl);
   $bidqty = getValue("bidqty", $localurl);
   $maxbid = getValue("maxbid", $localurl);
   $lagoonemorebid = getValue("lagoonemorebid", $localurl);</p>

<p>$tokenstring  = getValue("tokenstring", $localurl);
   $usage  = getValue("usage", $localurl);
   $robotimage = getValue("robotimage", $localurl);
   $ru = getValue("ru", $localurl);
   $usergoal = getValue("usergoal", $localurl);
   $reporting = getValue("reporting", $localurl);
   $buyerLogging = getValue("buyerLogging", $localurl);
   $runame = getValue("runame", $localurl);
   $ruparams = getValue("ruparams", $localurl);
   $PromoCode = getValue("PromoCode", $localurl);</p>

<p>
... приведенные выше переменные - это всего лишь несколько из всего списка. В принципе, я могу создать форму вручную с помощью
  echo "
form action=\"http://$domain/mailer/create.php\" name=\"create\" method=\"post\" />
input type=\"hidden\" name=\"random\" value=\"$random\" /></p>

<p>
</p>

<p>
но мне было интересно, есть ли «умная» техника для использования foreach или какой-либо функции, чтобы получить все переменные и сгенерировать форму вместо того, чтобы писать вручную все скрытые входные данные ...

Ответы [ 3 ]

1 голос
/ 20 июля 2010

Да, есть способ.Добавьте все свои значения в массив и используйте функцию PHP array_walk .

например:

$hiddenVars = array(
   'siteId' => getValue("siteId", $localurl),
   'itemid' => getValue("itemid", $localurl),
   .....
);

function outputHiddenFields(&$val, $key) {
   echo '<input type="hidden" name="', $key, '" value="', $val, '" />';
}

array_walk( $hiddenVars, 'outputHiddenFields' );

Преимущество этого метода в том, что ваш массив $ hiddenVars может изменитьсядинамически, и это все еще будет работать.

0 голосов
/ 20 июля 2010

Ну, есть более разумный способ. Вы можете использовать только одно скрытое поле, и значение будет закодировано сериализованной строкой всех ваших переменных:

$options = array(
'asd' => 1,
'zxc' => 2,
);
$options = base64_encode(serialize($options));
echo '<input type="hidden" name="state" value="' . $options . '" />';

Тогда вы можете получить такие значения:

$options = unserialize(base64_decode($_POST['state']));
0 голосов
/ 20 июля 2010

Я предполагаю, что getValue является пользовательской функцией. Моя рекомендация будет следующей:

 <?php
 // arrays to facilitate foreach loop
 $hidden_fields = array('siteId', 'itemid', 'bidqty'); // store hidden field names
 $hidden_values = array(); // store the hidden field values

 foreach ($hidden_fields as $key => $value) {
  // fill the values array using the values from fields array
  $hidden_values[$value] =  getValue($value, $localurl);
 }


 <?php
 echo "
 form action=\"http://$domain/mailer/create.php\" name=\"create\" method=\"post\" />
 input type=\"hidden\" name=\"random\" value=\"$random\" />";

 // output hidden fields
 foreach ($hidden_values as $key => $value) {
  echo '<input type="hidden" name="', $key, '" value="', $value, '" />';
 }
 ?>

Вы можете сделать это с одним массивом, но я чувствую, что это более гибко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...