2009-11-09 4 views
0

당신이 날 도울 수있는 양식 필드를 데이터베이스 필드 양식 필드를 비교 강조 표시 (PHP + MYSQL)다음 두 가지 시나리오에

시나리오 1 : 나는 데이터베이스 필드 값으로 HTML 양식 필드 값을 비교해야 양식을 제출하기 전에 (사용자에게 경고하기 위해) 값이 데이터베이스 값과 다른 색상의 양식 필드를 강조 표시하십시오.

시나리오 2는 :

형태로드, 나는 2 개 개의 다른 데이터베이스 테이블 (테이블 다른 컬럼 이름을 갖는되지만 정보는 동일 함)에 존재하는 값과 비교해야한다. 동일하지 않은 필드는 마스터 데이터가 2 차 데이터에서 변하는 사용자를 나타 내기 위해 html 형식으로 강조 표시되어야합니다.

이 작업을 수행하는 효율적인 방법은 무엇입니까? (비교 및 양식 값 강조 표시) 사전에

감사 나빈

답변

0

당신이 양식을 제출하기 전에 시나리오를 처리하기 원하기 때문에 1

<form method="post"> 
    <? foreach ($fields as $field) : ?> 
    <? if (in_array($diff_fields, $field)) : ?> 
    <div style="background-color:red"> 
    <? else : ?> 
    <div> 
    <? endif; ?> 
     <input type="text" value="<?= $record[$field] ?>"/> 
    </div> 
    <? endforeach; ?> 
</form> 

$fields = array('id', 'name', 'created_at'); 
$diff_fields = array(); 

$record = fetch_from_db($record_id); 

foreach ($fields as $field) { 
    if (isset($record[$field]) && $record[$field] != $_POST[$field]) { 
    $diff_fields[] = $field; 
    } 
} 
0

는, 당신이 자바 스크립트를 사용해야합니다 시나리오 비교. 페이지를 생성하기 전에 양식의 구조를 알고 있다면 jQuery, change() 및 숨겨진 필드를 사용하여 일련의 비교를 작성해야합니다.

시나리오 2의 경우 "효율적인"이라는 정의에 따라 약간 다릅니다. 최소한의 서버 리소스를 사용하려면 잘 명명 된 테이블에 입력 된 두 개의 데이터베이스 테이블을 사용하여 페이지를 다시 보내고 JavaScript를 사용하여 차이점을 강조 표시 할 수 있습니다. 클라이언트의 브라우저에서 실행되는 JS에 의존하지 않는 솔루션을 원할 경우 쿼리에서 MySQL과 비교할 수 있습니다. PHP 자체로 비교를 실행하는 것이 코드 작성이 가장 쉽고 따라서 프로그래머에게는 가장 효율적이지만 실행이 가장 느립니다 (문제가 테이블 크기와 같은 여러 가지 요소에 따라 달라지는 경우).

+0

Jquery를 사용하는 다른 대안이 없습니다 –

+0

양식을 제출하기 전에 클라이언트 측을 처리하려면 JavaScript를 사용해야합니다. 확실히 사용할 수있는 다른 라이브러리가 있거나 원하는 경우 라이브러리없이 갈 수 있습니다. jQuery를 사용하면 JS가 더 쉽게 작업 할 수 있으므로 jQuery를 제안한다. – acrosman