使用字段';用PHP数据填充HTML表单;s的ID作为标识符


Fill HTML Form with PHP data using field's ID as identifier

我有一个名为$clientinfo:的数组

[id] => 1
[dlastname] => Brown
[dfirstname] => George
[dmob] => 189328937
[dlandline] => 92839283

等等…我想填充这个表单:

<li class="hidden"><label for="did">unique id:</label><input id="did" type="text" name="did" style="background-color:gray" readonly="readonly" /></li>
<li class="firstcell"><label for="dlastname">lastname:</label><input id="dlastname" type="text" name="dlastname" /></li>
<li class="middlecell"><label for="dfirstname">firstname: </label><input id="dfirstname" type="text" name="dfirstname"  /></li> 
<li class="middlecell"><label for="dmob">mob </label><input id="dmob" type="text" name="dmob" /></li>

等等…

我可以通过在每个输入标签的末尾添加以下内容来使用php填充字段:

value="<?php echo isset($docinfo['dlastname']) ? htmlspecialchars($docinfo['dlastname']) : ''; ?>

这很好,但它需要我在每行的末尾写一些东西,如果表单很小,这也可以,但我正在写一个至少有250个字段的表单。

我想知道,由于输入ID与关联数组的键相同,如果有一种更简单、更自动化的方法来填充这些单元格,我想了两件事,一是将数组导入java,然后进行

 document.INPUTID.value='$clientinfo[INPUTID]';

或者类似的东西。。。但我无法弄清楚具体细节,第二个是在每个字段的代码中添加一个php命令,以编写类似于的内容

 value="<?php $id= $get_class($this); echo $clientinfo[$id]; ?>"

我真的不知道每当我把$get_class works放在那里时,它是如何把我的代码搞砸的,但也许有人可以想出办法来获取特定区域的id?

我应该提到的是,我在这方面很新,所以你会发现上面的错误,我需要一个非常详细的解释。

如果您有jQuery,请执行以下操作:

<script type="text/javascript">
 <? foreach($yourArrayWithValues as $key=>$val) { ?>
       $('#<?=$key?>').val('<?=htmlspecialchars($val)?>');
 <? } ?>
</script>

否则,只需使用javascript:

<script type="text/javascript">
 <? foreach($yourArrayWithValues as $key=>$val) { ?>
      document.getElementById('<?=$key?>').value = '<?=htmlspecialchars($val)?>';
 <? } ?>
</script>

也许您可以使用一些表单库http://pear.php.net/package/HTML_QuickForm2

他们会填写你的表格,并提供一些其他的好处,比如验证。教程中的一个例子:

<?php
// Load the main class
require_once 'HTML/QuickForm2.php';
// Instantiate the HTML_QuickForm2 object
$form = new HTML_QuickForm2('tutorial');
// Set defaults for the form elements
$form->addDataSource(new HTML_QuickForm2_DataSource_Array(array(
    'name' => 'Joe User'
)));
// Add some elements to the form
$fieldset = $form->addElement('fieldset')->setLabel('QuickForm2 tutorial example');
$name = $fieldset->addElement('text', 'name', array('size' => 50, 'maxlength' => 255))
                 ->setLabel('Enter your name:');
$fieldset->addElement('submit', null, array('value' => 'Send!'));
// Define filters and validation rules
$name->addFilter('trim');
$name->addRule('required', 'Please enter your name');
// Try to validate a form
if ($form->validate()) {
    echo '<h1>Hello, ' . htmlspecialchars($name->getValue()) . '!</h1>';
    exit;
}
// Output the form
echo $form;
?>

试试这样的东西:

<? $array = array("firstfield"=>"1", "secondfield"=>2); 
foreach($array as $key=>$val) { ?>
<li class="hidden"><label for="<?=$key?>"><?=$key?>:</label><input id="<?=$key?>" type="text" name="did" style="background-color:gray" readonly="readonly" value = "<?=htmlspecialchars($val);?>" /></li>
{YOU CAN ADD YOUR JAVASCRIPT HERE AS WELL}
<? } ?>