2011-07-29 58 views

回答

0

你可以做一對夫婦的方式。可能絕對最簡單的方法是在原始值的窗體上隱藏字段。然後在提交中,您可以將新值與原始值進行比較。

+0

是的,可以做布萊恩感謝給我的大腦一些光,但有沒有任何疑問要做呢? – Jonathan

2

嗯,我不確定這是否是最好的方法,但它會工作。請注意,語法是爲tsql(SYBASE),但你明白了。

1)在更新記錄之前:使用與您的UPDATE查詢相同的WHERE子句。請注意,'新值'是你要更新的內容,如果一個字段沒有被更新,那麼只發送舊值。這會告訴你將會被UPDATE查詢取代的文件。

SELECT CASE WHEN field1 <> 'new value' THEN 'field 1' ELSE '' END, 
CASE WHEN field2 <> 'new value' THEN 'field 2' ELSE '' END, 
CASE WHEN field3 <> 'new value' THEN 'field 3' ELSE '' END, 
CASE WHEN field4 <> 'new value' THEN 'field 4' ELSE '' END, 
CASE WHEN field5 <> 'new value' THEN 'field 5' ELSE '' END 
FROM table_name t 
WHERE t.field1 = "old value" 

2)更新記錄後:使用WHERE子句與您UPDATE查詢。請注意,「舊值」是更新前存在的值。如果記錄的關鍵字可以通過UPDATE進行更改,則可能需要相應地更新WHERE子句。這會給你由UPDATE更改的字段。

SELECT CASE WHEN field1 <> 'old value' THEN 'field 1' ELSE '' END, 
CASE WHEN field2 <> 'old value' THEN 'field 2' ELSE '' END, 
CASE WHEN field3 <> 'old value' THEN 'field 3' ELSE '' END, 
CASE WHEN field4 <> 'old value' THEN 'field 4' ELSE '' END, 
CASE WHEN field5 <> 'old value' THEN 'field 5' ELSE '' END 
FROM table_name t 
WHERE t.field1 = "old value" 
+0

感謝這樣一個偉大的答案lobo – Jonathan

0

我是一個初學者,但是從這裏(字面意義上)和這裏拉出一些東西,我想出了一些適合我的東西。

這是PHP /數據庫員工目錄。當我想編輯現有員工時,我正在使用預先填充了現有數據庫信息的表單。

當表單被提交時,並且在運行UPDATE查詢之前,我想獲取已更改的字段的名稱,以便將其添加到編輯日誌中。

同樣,我需要重申一下,我是一個初學者。毫無疑問,這是一種更簡單/更簡單的方法。你已經被警告:)

//Create array to use later in identifying the changed fields and set each to 0 
$update = array('Firstname' => 0, 
       'Lastname' => 0, 
       'Extension' => 0); 

//Set incoming POST data to variables 
if (isset($_POST['e_fn'], $_POST['e_ln'], $_POST['e_ext'])) { 
    $e_fn = $_POST['e_fn']; 
    $e_ln = $_POST['e_ln']; 
    $e_ext = $_POST['e_ext']; 
} 

//grab existing employee data with existing function 
$thisEmp = $employee->fetch_emp($e_id); 

//set old data to $old_* 
    $old_fn = $thisEmp['firstname']; 
    $old_ln = $thisEmp['lastname']; 
    $old_ext = $thisEmp['extension']; 

//compare $old_* to each field sent in POST and flip switch for changed fields 
    if ($old_fn !== $e_fn) {$update['Firstname'] = 1;} 
    if ($old_ls !== $e_ls) {$update['Lastname'] = 1;} 
    if ($old_ext !== $e_ext) {$update['Extension'] = 1;} 

//get the key value for each element with the switch == 1 
    foreach ($update as $key => $value) { 
     if ($value == 1) { 
      $wasaffected .= $key . ', '; 
     } 
    } 

現在你已經有了哪些領域進行了更改的名稱 好了,好了,它不是實際的字段的名稱,而是 名的鑰匙,但如果你願意,你可以將它們命名爲相同。

echo $wasaffected; //--> Firstname, Extension,