2012-06-07 54 views
0

我已經使用PHP和MySQL創建了一個Web應用程序。我正在尋找一種實現某些用戶數據跟蹤的好方法。我想要它,以便當用戶更改一個字段時,我將能夠顯示更改與一些像「John Doe已更改關閉日期從2012年6月5日至2012年6月13日」實現用戶數據修訂跟蹤

我可以'沒想到一個好的,簡單的方法來做到這一點。任何人有任何建議?

+0

那麼,基本的過程是相對直接的:當保存一個變化,比較舊的和新的字段值;對於那些不同的字段,將更改寫入日誌。你能更具體地說明你卡在哪裏嗎? –

+0

當您更新表格時,您可以標記這些消息 – swapnesh

+0

我想我被卡住了,因爲我不知道哪些字段正在更新。我應該在更新之前進行查詢以選擇原始字段,然後比較所有字段並查看是否有不同的字段?什麼是比較它們的最佳方法? – Keith

回答

0

這會做你想要做的事情,我沒有使用數據庫連接,所以你可以看到完全按照給你的工作,但在數據庫連接和數據中的子層應該很容易看到如何會工作。我添加了加密功能,以防萬一您正在與可以在沒有任何「通知」的情況下將數據更改給任何人(可從Simple encryption in PHP中獲取)中獲益的人一起工作。如果不需要,您可以完全忽略它。本質上,它只是將數據存儲在頁面上的隱藏字段中,並在提交後將其比較,以查看發生了什麼變化。 HTH

<?php 
function ecrypt($str){ 
    $key = "something simple"; 
    for($i=0; $i<strlen($str); $i++) { 
    $char = substr($str, $i, 1); 
    $keychar = substr($key, ($i % strlen($key))-1, 1); 
    $char = chr(ord($char)+ord($keychar)); 
    $result.=$char; 
    } 
    return urlencode(base64_encode($result)); 
} 


function decrypt($str){ 
    $str = base64_decode(urldecode($str)); 
    $result = ''; 
    $key = "something simple"; 
    for($i=0; $i<strlen($str); $i++) { 
    $char = substr($str, $i, 1); 
    $keychar = substr($key, ($i % strlen($key))-1, 1); 
    $char = chr(ord($char)-ord($keychar)); 
    $result.=$char; 
    } 
return $result; 
} 



if (isset($_POST['update']) && $_POST['update']!='') { 
    $data1=$_POST['data1']; 
    $data2=$_POST['data2']; 
    $data3=$_POST['data3']; 

    $datahide1=decrypt($_POST['datahide1']); 
    $datahide2=decrypt($_POST['datahide2']); 
    $datahide3=decrypt($_POST['datahide3']); 

    $msg=''; 
    if ($data1!=$datahide1) { 
     $msg.="John Doe has change name from ".$datahide1." to ".$data1."<br>"; 
    } 
    if ($data2!=$datahide2) { 
     $msg.="John Doe has change price from ".$datahide2." to ".$data2."<br>"; 
    } 
    if ($data3!=$datahide3) { 
     $msg.="John Doe has change date from ".$datahide3." to ".$data3."<br>"; 
    } 

    // do your database update here 

    // do your results here 
    if ($msg!="") { 
     echo $msg; 
    } else { 
     echo "No changes"; 
    } 
    die(); 
} 

// Database recordset here 

// Junk data 
$data1="John Doe"; 
$data2="25.00"; 
$data3="6/5/2012"; 

// encypted data 
$datahide1=ecrypt($data1); 
$datahide2=ecrypt($data2); 
$datahide3=ecrypt($data3); 

?> 
<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Document</title> 
</head> 

<body> 
<form name="form1" method="post" action="revisiontrack.php"> 
    <label for="data1">Name:</label> 
    <input type="text" name="data1" id="data1"><input name="datahide1" type="hidden" value="<?php echo $datahide1;?>"> 
    <label for="data2">Price:</label> 
    <input type="text" name="data2" id="data2"><input name="datahide2" type="hidden" value="<?php echo $datahide2;?>"> 
    <label for="data3">Date:</label> 
    <input type="text" name="data3" id="data3"><input name="datahide3" type="hidden" value="<?php echo $datahide3;?>"> 
    <input name="update" type="hidden" id="update" value="y"> 
<input type="submit" name="submit" id="submit" value="Submit"> 
</form> 
</body> 
</html> 
+0

是的,我想可以這樣做。我想知道是否有一個更簡單的方法,不需要這麼多的表單域。 – Keith