2012-03-11 144 views
0

我有這個數組命名$clientinfo填寫HTML表單

[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> 

等on ...

我可以在每個輸入標籤的末尾添加這個字段來填充字段:

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?

我應該提到我很新,所以你會發現上面的錯誤,我將需要一個非常詳細的解釋。

回答

0

,如果您有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

這看起來完全一樣,我需要...由於某種原因壽不會工作, 我把它放在我的頁面中,在頭部分之前,用php數組名稱替換yourArrayWithValues ...但它不填充單元格... 任何想法? ('#dmob')# – krasatos 2012-03-11 13:01:03

+0

我甚至試過這樣的普通java命令: '' ,它仍然不工作,我應該多增加一些規範?像.form.classname.getelementbyid?或類似的東西? 有什麼想法? – krasatos 2012-03-11 13:06:28

+0

這是一個順序的問題,我添加了一個$(文件)。就緒(函數(){之前它和它的作品,還是不能做你以前說的陣列,將在它的工作,在這裏報到 – krasatos 2012-03-11 13:23:55

0

也許你可以使用某種形式的圖書館像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; 
?> 
+0

聽起來非常有用...但我不想重寫表單,我alre ady的整個表單都準備好了id/classes 我想要一些東西,我將填充現有的表單,將數組的值添加到通訊錄ID中。 – krasatos 2012-03-11 11:57:37

0

嘗試這樣:

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

vytautas,我不希望重寫整個表格,我已經在那裏的領域,我想要的東西,將自動填充他們的價值取決於他們的ID – krasatos 2012-03-11 12:02:30