2011-12-01 4 views
1

PHP/HTML로 작성된 양식이 있습니다. 양식은 텍스트 상자, 드롭 다운 및 체크 상자로 구성됩니다. 내가 성취하고자하는 것은 텍스트 상자, 드롭 다운 및 체크 박스에서 폼의 모든 변경 사항을 추적하여 감사 목적으로 DB에 저장하려고합니다. 나는 이전 데이터를 알 필요가 없으며 무엇이 업데이트되었지만 사용자가 textbox1, 드롭 다운 및 체크 박스를 변경했는지 알고 싶습니다.DB에 양식과 상점의 변경 사항을 추적하는 방법

PHP에서 가장 효율적인 방법은 무엇입니까? mysql에서 일부 트리거를 읽었지만 PHP에서만 수행하려고합니다.

고마워요.

+0

이미 갖고있는 것을 보여줄 수 있습니까? 우리가해야 할 일을 모른 채 물건을 제안하는 것은 상당히 어렵습니다. –

+0

사실 나는 변화를 추적하기위한 코드가 아직 없지만 기본 양식은 있지만 언급 된 ive로 구성되어 있습니다. 내가 이것을 할 수있는 최선의 방법을 생각할 수 없기 때문에 내가 묻는 이유. 그러나 나는 모든 분야의 숨겨진 가치를 갖는 것과 같은 내 마음 속에 무언가를 가지고 있으며 숨겨진 저장된 자료를 그 분야의 현재 자료와 비교합니다. 그러면 그것이 일치하지 않으면 그것을 변화로 생각합니다. 어떻게 생각해? –

답변

0

요청을 올바르게 해석하면 양식을 그릴 때 필드 값을 알 수 있습니다. 당신이 Macjohn 솔루션을 기반으로

<?php 
$previous = $_POST['values']; 
$actual = md5($_POST['text'] . $_POST['drop'] . $_POST['check']); 
if ($previous !== $actual) 
    // you know some values are diferent 
} 
?> 
0

나는이 일에 아약시 마술이 일어나지 않을 것이라고 생각 하나? 그렇지 않다면 어쩌면이게 뭔가?

사용자가 양식을 제출할 때 모든 값을 가져 와서 변경된 값이 있으면 데이터베이스에 현재 보유되어있는 값과 비교합니다. 변경하지 않은 경우 아무 것도하지 않으면 db에 쓰십시오. db에는 업데이트 트리거가있어서 행이 업데이트 될 때 새 데이터를 쓰기 전에 이전 행을 다른 테이블 (아카이브 테이블 일 수도 있음)에 복사합니다. 데이터가 어떻게 보이는지 또는 테이블 구조가 무엇인지 알지 못하면 이보다 더 많은 것을 제공하기가 어렵습니다.

0

내가 여기에 와서 한 두 값을 비교할 수 있습니다하지만 난 것 submited 양식의 과정에서 그런

<?php 
$hash = md5($text . $drop . $check); 
?> 
<input type="hidden" name="values" value="<?php $hash; ?>" /> 

: 당신은 그들의 해시를 저장할 수 있습니다 이 SQL 시나리오를 효율적으로 처리하는 방법을 묻고 싶습니다. 폼의 모든 요소에 if 문을 사용하는 것과 비교하여 코드를 더 작게 만들 수있는 바로 가기가 있다고 확신합니다.

if ($_REQUEST['hidden_value_of_input_box1'] !== $newvalueofinputbox1) { 

    $data = "Input Box 1 has been changed"' 

    $name = $name; 
    $date = $datenow; 

    $stm = $dbh->prepare("INSERT INTO audit SET name=:name, datenow=:datenow, data=:data"); 
    $stm->bindParam(':name', $name); 
    $stm->bindParam(':value', $value); 
    $stm->execute(); 
} 

if ($_REQUEST['hidden_value_of_input_box2'] !== $newvalueofinputbox2) { 

    $data = "Input Box 2 has been changed"' 

    $name = $name; 
    $date = $datenow; 

    $stm = $dbh->prepare("INSERT INTO audit SET name=:name, datenow=:datenow, data=:data"); 
    $stm->bindParam(':name', $name); 
    $stm->bindParam(':value', $value); 
    $stm->execute(); 
} 

if ($_REQUEST['hidden_value_of_dropdown1'] !== $newvalueofdropdown1) { 

    $data = "Drop Down 1 has been changed"' 

    $name = $name; 
    $date = $datenow; 

    $stm = $dbh->prepare("INSERT INTO audit SET name=:name, datenow=:datenow, data=:data"); 
    $stm->bindParam(':name', $name); 
    $stm->bindParam(':value', $value); 
    $stm->execute(); 
} 

if ($_REQUEST['hidden_value_of_dropdown2'] !== $newvalueofdropdown2) { 

    $data = "Drop Down 2 has been changed"' 

    $name = $name; 
    $date = $datenow; 

    $stm = $dbh->prepare("INSERT INTO audit SET name=:name, datenow=:datenow, data=:data"); 
    $stm->bindParam(':name', $name); 
    $stm->bindParam(':value', $value); 
    $stm->execute(); 
} 
관련 문제