2012-06-24 6 views
0

예제 사용자 프로필 편집 페이지를 제공합니다. 양식에는 12 개의 다른 필드가 있습니다 (나이, 성별, 흡연, 음주 등). 모든 필드는 단일 테이블에 있습니다. 사용자가 데이터를 저장할 때 하나의 필드 만 변경된 경우에도 mysql update 문을 사용하여 모든 데이터를 설정합니다.사용자 업데이트 프로필 및 mysql 업데이트

UPDATE profile SET age=22, smoke=1, drink=1, ... 

그러나 이것이 올바른 방법인지 궁금합니다. 먼저이 필드에 대해 변경된 필드와 SET 데이터를 확인하는 것이 더 좋은 방법일까요? 이것을 달성하기 위해 모든 현재 값을 숨겨진 입력에 넣을 것입니다.

<input type="hidden" name="oldAge" value="<?php echo $age; ?>" /> 
<input type="text" name="age" value="<?php echo $age; ?>" /> 
<input type="hidden" name="oldGender" value="<?php echo $gender; ?>" /> 
<input type="text" name="gender" value="<?php echo $gender; ?>" /> 

<?php 
//... 
if($_POST['oldAge']!=$_POST['age']){ 
    $updateQuery .= ", age=$_POST['age']"; 
} 
if($_POST['oldGender']!=$_POST['gender']){ 
    $updateQuery .= ", gender=$_POST['gender']"; 
} 
//... 
?> 

이런 식으로 적은 수의 데이터가 설정되어 더 나은 mysql 성능을 낼 수 있습니다. 이것은 어떤 의미를 갖습니까, 아니면 복잡하게하는 것만으로 필요합니까?

+0

당신이 맞으면 어떤 필드가 변경되었는지 확인하고 불필요한 업데이트를 저장하기 위해 해당 필드 만 설정하십시오. –

+0

이 질문은 [http://stackoverflow.com/questions/459669](http://stackoverflow.com/questions/459669) –

+0

예일 수도 있습니다. 나는 네가 옳았다. 나는 그것을 놓쳤다. – user1324762

답변

0

아약스로 게시물 데이터를 보내기 위해 이미 사용하고 있으므로 javascript jquery로 확인합니다.

var oldValues = $('form').serialize().split("&"); 
var values = '';   
var valChanged = false; 
var curValues = ''; 
$("input[type='submit']").click(function() { 
    $(this).closest('form').submit(function() { 
     curValues = $(this).serialize().split("&"); 
     for(var i in curValues){   
      valChanged = false;   
      for(var i2 in oldValues){ 
      if(oldValues[i2].split("=")[0]==curValues[i].split("=")[0] && (oldValues[i2].split("=")[1])!=(curValues[i].split("=")[1])){ 
       valChanged = true; 
       break; 
      } 
      } 
      if(valChanged==true){ 
      values = values+curValues[i]+"&"; 
      }   

     } 

     $.ajax({ 
      type: "POST", 
      url: $(this).closest('form').attr('action'), 
      data: values, 
      success: function(msg){        
       //saving done 
       closeDialog(200);        
      }   
     });  
     return false;   
    }); 
}); 
0

당신은 단지 복잡한 일을하고 있습니다. 오히려 할 수있는 일은 단순히 필드를 '나이'로 유지하고 나이를 에코로 표현하는 것입니다. 사용자가 값을 변경하고 양식을 보내면 데이터의 값을 업데이트하기 만하면됩니다. 이전과 동일한 지 확인하려면 변경 사항에 자바 스크립트 유효성 검사를 적용하고 사용자가 값을 변경하지 않고 양식을 제출하면 '변경 사항 없음'으로 경고합니다.

희망이 도움이됩니다.

관련 문제