2009-11-17 1 views
3

나는 내 클라이언트가 백엔드에서 항목을 주문할 수있게하고 싶습니다. 가장 쉬운 방법은 항목에 대한 데이터베이스 테이블에 값을 가져 오는 "order"라는 필드가 있어야한다는 것입니다. 이것은 클라이언트가 넣는 값입니다. 그러면 "주문"필드로 SQL 쿼리를 실행할 수 있습니다.DB (PHP)에서 항목 목록의 "주문"을 처리하는 방법

지금 당장은 매우 간단합니다. 논리가 없습니다. 사용자가 한 항목에 대해 = 100, 다른 값에 대해 200을 입력하면 낮은 값을 가진 것이 먼저 나열됩니다. . 이 일을하는보다 우아한 방법이 있습니까? 나는 "위로 움직여 라"와 같은 것을 생각하고있다. 나는 항목을보다 편리하게 관리하려고 노력하고있다.

모든 아이디어를 높이 평가하겠습니다!

답변

0

데이터베이스가 실행되는 한 주문 필드를 사용하는 솔루션이 정확합니다. 당신은 아마도 이것을 사용자에게 보여주고 싶지 않을 것입니다. 위쪽 및 아래쪽 화살표를 사용하여 텍스트 입력을 피할 수 있습니다. 사용자가 '위'화살표를 클릭하면 기본적으로 특정 레코드를 위의 레코드로 전환합니다. 메타 언어에서이은 매우 초안 것을

// $myId holds id of record, $myOrder holds the order of the record 

SELECT id, order FROM t WHERE order < $myOrder LIMIT 1 
// Store id in $nextId, order in $nextOrder 

UPDATE t SET order = $nextOrder WHERE id = $myId 
UPDATE t SET order = $myOrder WHERE id = $nextId 

주, 당신은 적절한 이스케이프를 추가해야합니다. 또한 엄격한 주문을 보장하기 위해 UNIQUE 색인을 주문하려면 마지막 두 문장을 변경해야합니다.

+0

또한 위와 아래로 이동하는 것이 긴 목록에서 편리하지 않으므로 몇 가지 추가 정렬 방법을 추가해야합니다. – jeroen

0

"위로 이동"및 "아래로 이동"을 구현하는 UI 기능 (예 : 버튼 및 지원 코드)을 제공 할 수 있지만 데이터베이스에서 사용자 순서를 유지하려면 정렬 키를 저장해야합니다 이미 분별했다. 이것을 할 수있는 다른 방법은 없습니다.

itemKey  The primary key of the item table 
userKey  The primary key of the userID table (or maybe just the userID) 
sortOrder The sort key for this combination of user and product 

그런 다음 해당 사용자의 종류를 결정하기 : 당신이 다른 사용자가 다른 다음 같은 행을 주문 할 수 있도록하려는 경우 sortkey는이 같은 스키마를 별도의 "사용자 정렬"테이블의 일부가 될 것입니다 시퀀스를 사용하면 항목 테이블을 userSort 테이블에 조인 할 수 있습니다. where userKey=[the user you're interested in]

1

사용자의 접근 방식은 사용자가하려는 작업에 적합합니다. 사물의 클라이언트 인터페이스 측면에 대해서는 jQuery UI Sortable 라이브러리를 사용하는 것이 좋습니다. 정렬 가능한 인터페이스의 장점은 다음과 같이 AJAX를 통해 저장소 코드에 쉽게 연결할 수 있다는 점입니다. http://harm.glucose-ontwerp.nl/dev/sortlist.php. AJAX를 통해 전송되는 데이터는 ID 목록과 순서입니다.

관련 문제