2009-09-05 104 views
0

我正在一個PHP程序,需要在每個窗體控件上的JavaScript。一旦發生onblur事件,該值將自動發送到服務器以更新數據庫。最好的方法來跟蹤數據庫表格/列的HTML表格控制

我可能有50個窗體控件分佈在5個選項卡上,所以我不想硬編碼php文件中的信息。

我可以從HTML5增選一個想法,這個如

data-table='user' data-column='firstname' 

爲每個項目創造新的屬性,然後JavaScript的可以拉這些值並把它們發送到PHP文件。

我不知道是否有更好的方法來管理這些表單控件和幾個表/列之間的映射?

回答

1

HTML

<input id='data-base*data-colum' onblur='preupdate(this);' value='' /> 

的Javascript

function preupdate(el){ 
    var idData = el.getAttribute('id').split('*'); 
    var dataBase = idData[0]; 
    var dataColum = idData[1]; 

    update(el.value, dataBase, dataColum); 
} 
+0

我喜歡這個使用id字段的想法。我沒有考慮把表和列放在裏面。簡單很棒。謝謝。 – 2009-09-05 02:57:42

+0

我已經實現了這個更新和插入,雖然我不得不做一些改變,編碼列和值,它的工作得很好。 – 2009-09-22 04:28:51

1

其實我認爲這是您擁有的最佳選擇。如果您使用的jQuery,你可以做這樣的事情:

$("input").blur(function() { 
    var data-table = $(this).attr('data-table'); 
    var data-column = $(this).attr('data-column'); 

    $.ajax({ 
    type: 'post', 
    url: your_url, 
    data: your_get_data 
    }); 
}); 
+0

我希望有一個更好的解決方案,因爲它對我來說似乎是最好的選擇,但是,有時候看到我是否錯過了一些東西是很好的。感謝Thanx。 2009-09-05 02:26:53

+1

噢,有一件事,我不會將它作爲GET請求發送,主要是因爲每個GET請求都傾向於存儲在日誌文件中,但POST不是,並且沒有必要無意地填充日誌文件。我將獲取請求的數量限制在很大程度上。 – 2009-09-05 02:28:28

+0

是的,我forogott實際上改變了發佈,你是對的。 – yoda 2009-09-05 02:33:25

0

我會使用PHP來生成一個數據結構映射控制(希望他們有獨特的名稱/ ID)的數據庫信息。然後,我會用JSON吐出這個inline javascript in。

然後您的所有字段上的on_blur屬性可以相同(或每個字段都傳遞一個唯一的ID),並調用一個javascript函數從數據結構中查找數據庫信息。

+0

這對於小型數據庫來說可能是一個很好的解決方案,但是如果它開始變大,它可能開始難以來回發送數據,但對於少量數據來說,這可能是一個很好的解決方案。謝謝。 – 2009-09-05 03:00:31

+0

咦?也許你不明白我的建議。我正在考慮讓php生成這樣的字符串:「field_meta = ['email':['accounts','email'],'description':['profile','text']];」並將其放入