Заполните HTML-форму данными PHP, используя идентификатор поля в качестве идентификатора - PullRequest
0 голосов
/ 11 марта 2012

У меня есть этот массив с именем $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 полей.

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

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

или что-то в этом роде ... но я не могу понять спецификуа второй был как-то добавить команду php в код каждого поля, чтобы написать что-то вроде:

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

Я действительно не знаю, как $get_class works, и он испортил мой код всякий раз, когда я помещаю его втам, но, может быть, кто-то может что-то придумать, чтобы получить идентификатор конкретной области?

Я должен отметить, что я очень новичок в этом, поэтому вы найдете ошибки выше, и мне понадобится очень подробное объяснение.

Ответы [ 3 ]

0 голосов
/ 11 марта 2012

Попробуйте что-то вроде этого:

<? $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}

<? } ?>
0 голосов
/ 11 марта 2012

если у вас есть 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>
0 голосов
/ 11 марта 2012

Может быть, вы можете использовать некоторую библиотеку форм, например 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;
?>
...