我有一个名为$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}
<? } ?>