2010-07-30 3 views
0

이런 문제가 발생했습니다. 시나리오는 다음과 같습니다. 예를 들어 여러 열이 포함 된 데이터베이스 테이블 A가있는 경우 서버 (PHP 스크립트)가 데이터베이스를 웹 클라이언트에 전달하면 HTML 테이블로 렌더링됩니다. 이제 클라이언트 측 요구 사항이 있습니다. 사용자는 HTML 표에서 여러 행을 추가/삭제할 수있을뿐만 아니라 행 순서를 변경할 수도 있습니다. 일부 jquery 플러그인 (예 : http://www.isocra.com/2008/02/table-drag-and-drop-jquery-plugin/)의 도움을 받아 클라이언트 측을 마무리 할 수 ​​있다면. 자, 내 질문은, 어떻게이 정보를 다시 서버에 전달할 수 있는가하는 것입니다. 새로운 행과 삭제 된 행이 있기 때문에 원본 테이블 행 순서 (플러그인 tableDnD.serialize 함수로는 충분하지 않음)로는 충분하지 않습니다.전체 html 테이블을 서버에 다시 전달하고 데이터베이스 테이블을 바꿉니 까?

내 솔루션은 다음과 같습니다. 전체 HTML 테이블을 서버로 다시 전달한 다음 전체 데이터베이스 테이블을 정보로 바꿉니다. 이 경우 잠재적으로 큰 HTML 테이블을 서버로 다시 전달하는 방법은 무엇입니까? 이 질문에 대한 대답은 다음과 같습니다. Iterate through HTML table using jQuery, converting the data in the table into JSON 기본적으로 전체 HTML 표를 json 형식으로 변환하고 전체 표를 대체하기 위해 서버 측으로 전달합니다.

더 나은 해결책이 있습니까? 모든 제안을 부탁드립니다!

+0

jQuery UI 고유의 [sortable] (http://jqueryui.com/demos/sortable/)을 사용하여 테이블 행을 정렬 할 수 있습니다. 테이블 행을 정렬 가능하게 만드는 방법에 대한 설명은 [여기] (http://setiabud.blogspot.com/2009/06/jquery-ui-sortable-with-table.html) –

답변

3

IMHO, JavaScript 전용 솔루션을 작성하는 경우 전체 HTML 테이블을 다시 서버로 전달할 필요가 없습니다.

  • 초기 테이블을로드

    는 SQL 테이블에서 행의 고유 식별자에 id 특성을 설정.
  • 데이터를 변경하거나 (행을 제거하거나 추가하거나 행 내용을 변경하는 경우) 은 ids를 배열에 저장합니다.
  • 데이터를 한 번 변경하면 은 변경된 행만 제출합니다 ().

물론이 부분을 조정해야 할 수도 있지만 일반적 아이디어 일뿐입니다. 예를 들어 삭제 된 행의 ID를 별도의 배열에 추가하는 것입니다. 그런 다음이를 별도로 전달하여 일치하는 행을 데이터베이스에서 제거 할 수 있습니다.

+0

에서 새 행을 추가 할 때 찾을 수 있습니다. 중간, 나는 id (데이터베이스에 해당 id 없음) 클라이언트 측에 새 행의 내용 (아직 데이터베이스 테이블에 콘텐츠 없음) 기록해야합니다, 바로 그 거죠? – WilliamLou

+0

클라이언트 측에서는 데이터베이스에 새로 삽입 된 행의 ID가 무엇인지 알 수 없습니다. 따라서 두 개의 배열을 유지하려면 빈 ID를 사용하거나 세 번째 배열을 만들 수 있습니다. 행의 내용을 유지하는 것은 이미 ''요소에 있으므로 별도로 보관할 필요가 없습니다. –

관련 문제