2012-10-10 3 views
3

아무도 나를 PHP 페이지에서 사용자 지정 CMS pagemanager 주문할 수 있습니까?페이지 위쪽/아래쪽 화살표로 PHP에서 주문

페이지 (기사)를 관리하는 데이터베이스 테이블이 있습니다. ID - parentId - 컨텐츠 - 제목 - 위해 - 등

나는 선택 트리 순서로 HTML 테이블이 표시 (부모 다음 아이 마찬가지로) .. 내가 편집을 넣어 /옵션을 삭제하고 또한 하나 개의 컬럼 주문하기 페이지, 나는 위쪽/아래쪽 화살표로 주문 열을 원한다. 그리고 그것을 클릭 할 때 데이터베이스 테이블의 해당 주문 필드 (일부 숫자가 포함되어 있음)를 바꿔야한다. 문제는 부모와 자식이 포함되어 있으므로 화살표가 올바른 순서로 배치되어야한다는 것입니다. 즉, 자식과 부모를 바꿔 쓰지 마십시오. 동일한 부모 ID가있는 열만 바꿔야합니다 ..

답변

1

코드 또는 데이터베이스 구조를 제공하지 않았으므로 기본 주문 시스템을 설명하려고합니다. 어떻게 해결할 수 있었으면 좋겠습니까? 너의 문제.

- root (id:0) 
    | 
    |___ abc (id:1) 
    |  |___ 123 (id:3) 
    |  |___ 789 (id:5) 
    |  |___ 456 (id:4) 
    | 
    |___ xyz (id:2) 
:이 같은 나무가 줄

SELECT ... ORDER BY order, id ASC 

:이 같은 쿼리를 한 경우

id - parent - title - order 
1 - 0  - abc - 1 
2 - 0  - xyz - 2 
3 - 1  - 123 - 1 
4 - 1  - 456 - 3 
5 - 1  - 789 - 2 

:

이 당신의 데이터가 MySQL의 테이블에있는 상상

789 (id : 5) 항목을 클릭하면 항목이보다 높은 순서로 표시됩니다, 당신의 SQL 쿼리는 다음과 같이해야한다 :

UPDATE table SET order = order + 1 WHERE order = order - 1 AND parent = 1 

다음 질의 :

- root (id:0) 
    | 
    |___ abc (id:1) 
    |  |___ 789 (id:5) 
    |  |___ 123 (id:3) 
    |  |___ 456 (id:4) 
    | 
    |___ xyz (id:2) 

당신이 더 필요한 경우 :

UPDATE table SET order = order - 1 WHERE id = 5 

귀하의 트리가 다음과 같은 것을해야한다 유연한 방법으로 다음과 같이 사용할 수도 있습니다.

(여기에 100 개의 열이 있다고 가정합니다. ord ID 다음 장소에 33 : 1에서 100까지 겹으로, 당신은 ID를 이동하려는 51)

UPDATE table SET order = order + 1 WHERE order >= 51 
UPDATE table SET order = 51 WHERE id = 33 
UPDATE table SET order = order - 1 WHERE order BETWEEN 33 AND 50 
+0

안녕 마흐디, 감사는 응답을, 내가 그것을 밖으로 시도하고 회신하자 .. – shijin

+0

@shijin 환영! 그것이 당신을 위해 일하지 않는 경우에 더 많은 세부 사항을 제공하는 것이 좋습니다 ... :) – Mahdi

관련 문제