2011-12-16 114 views
2

所以我有一個表單用於從MySQL插入和編輯數據。 我認爲不是寫兩種形式,我只會寫一種,這將用於兩個目的。所以當插入新數據時,它的字段(輸入等)是空的。但是,當編輯現有數據時,我有Jquery用.val()填充字段。用jquery填充表單域

像這樣:

function formSetup(form_name, array_fields) 
{ 
    $(document).ready(function(){ 
     var selector; 
     for(var key in array_fields) 
     { 
      selector = "form[name=" + form_name + "] [name=" + key + "]"; 
      //alert(selector); 
      $(selector).val(array_fields[key]); 
     } 
    }); 
} 

然後:

var fieldsArray = new Array(); 
fieldsArray["field1"] = "data read from Myqsl php"; 
fieldsArray["field2"] = "data read from Myqsl php"; 
//etc 

順便說一句,PHP確實告訴我的頁面這種形式是否應該插入或編輯數據的工作,所以這個JavaScript函數只有在$ _GET [「action」] ==「edit」時才被php調用。

我想知道的是,這是做這種事情的最好方法嗎? 有沒有一個標準的方法來做到這一點?

回答

0

你是對的,很高興只有一種形式。 通常在服務器端填寫的值(在您的案例中由PHP),但這取決於項目體系結構 - 您可以使用jQuery。例如,對於PHP:

<input type="text" name="email" id="email" value="<?=$data['email']?:''?>" /> 

例如使用jQuery:

$.get("getData.php", function(data){ 
    $("input#id").val(data['id']); 
    $("input#email").val(data['email']); 
}); 

要找出形式是否是用來插入或更新數據使用隱藏字段與數據庫記錄的主鍵(通常id):

<input type="hidden" name="id" id="id" value="<?=$data['id']?:''?>" /> 

當此字段爲空時 - 創建新記錄。當它包含某個值時 - 更新一個包含主鍵的記錄。

+0

在每個'value'上使用php代碼會使我的代碼看起來非常難看。那麼呢?我將不得不檢查每個選擇與PHP?我認爲最好使用jquery – user1091856 2011-12-16 22:55:09

0

我來。我正在爲兩個操作製作相同的表單 - 插入和編輯。 如果您使用某種Ajax技術並嘗試填充表單而不刷新頁面,則您的方向正確。但更好的辦法是通過將數據回傳到字段值來增加php的值。 沒有這樣的標準。接受你。

0

我會做這個serverside。

在原始PHP中,這是一個沒有像Yii,Cake等支持框架。我會實現一個輕量級的MVC框架。

創建一個業務對象類。

class MyData 
{ 
    $field1; 
    $field2; 
    .. 
} 

然後填寫您的業務對象從您的數據源。

$data = new MyData(); 
$data->field1 = "Something"; 
$data->field2 = "Other stuff..."; 

或者它是否是新數據。

$data = new MyData(); 

創建表單模板。 form.tmp.php

<form ...> 
    <input type="text" name="field1" value="<?= $data->field1; ?>" /> 
    <input type="text" name="field2" value="<?= $data->field2; ?>" /> 
</form> 

的內容,然後使用光來包裹你的模板。

ob_start(); 
    include('form.tmp.php'); 

$html = ob_get_contents(); 
ob_end_clean(); 

自從我做了這樣的事情已經有一段時間了。有一些TON的PHP框架可以幫你照顧這個。一些輕量級的,一些重型企業。

我沒有測試這個,但這應該讓你開始。

0

而不是使用JavaScript填充表單,更好的方法是處理這個服務器端。

在你的PHP模板,你可以做填充輸入這樣

<input name="field1" type="text" value="<?php echo $fieldValues['field1']; ?>" /> 
<input name="field2" type="text" value="<?php echo $fieldValues['field2']; ?>" /> 

如果每個變量的字段爲空,否則你從數據庫中檢索到的數據將被插入任何價值。