2011-03-09 6 views
1

nestedSortable이라는 환상적인 jquery 플러그인을 발견했습니다. 이제는 데이터베이스를 새로운 정렬 순서로 업데이트하면됩니다. PHP를 사용하고 있습니다.nestedSortable jQuery의 출력을 얻는 데 도움이 필요합니다.

여기가 혼란 스럽습니다. 제공된 예제에서는 출력을 가져 오는 세 가지 방법이 있습니다. 직렬화, 계층 구조 및 배열.

POST를 통해 처리하기 위해 PHP로 출력을 보내도록 자바 스크립트를 어떻게 수정할 수 있습니까?

전체 플러그인 포럼을 읽고 정확한 기능을 원했던 사람의 form of a save function에서 희망의 찬란함을 발견했습니다. 불행히도 그것은 BYO getItemIdFromElement($element)이었고 플러그인의 개발자는 그의 배열 함수가 더 깨끗한 코드로 똑같은 일을한다고 말했다 ...

나는 누군가가 이것을 이해하도록 도와 줄 수 있으면 좋겠다.

팀은

답변

0

당신은 당신의 PHP 스크립트에 직렬화 된 데이터를 전송하고 데이터 유형으로 POST를 지정) .ajax(를 사용할 수 있습니다.

숨겨진 값으로 양식을 채운 다음 제출할 수도 있지만 더러워 보일 수 있습니다.

+2

고마워요. 그러나 나는 아직도 붙어있다. 나는 이론을 이해하지만, 내가 실제로 붙어있는 실제적인 적용을 이해한다. nestedSortable 목록의 직렬화에 대한 링크 또는 두 개의 자습서가 필요했습니다. 구조가 매우 혼란스럽고, 왼쪽><오른쪽 정렬 방법을 사용하는 예제는 데이터베이스가 구조화 된 방식 인 parent_id와 함께 예제가 필요합니다. – Tim

7

나 자신도 문제가 발생했습니다. forum에는 양식 (form solution)을 통해 목록을 저장하기 위해 게시 된 솔루션이 있습니다. 개인적으로 나는 AJAX를 선호하므로 내 자신의 솔루션을 썼다.

변경 :

$('ol.sortable').nestedSortable({ 
     disableNesting: 'no-nest', 
     forcePlaceholderSize: true, 
     handle: 'div', 
     helper: 'clone', 
     items: 'li', 
     maxLevels: 3, 
     opacity: .6, 
     placeholder: 'placeholder', 
     revert: 250, 
     tabSize: 25, 
     tolerance: 'pointer', 
     toleranceElement: '> div' 
    }); 

에서 :

$('ol.sortable').nestedSortable({ 
    disableNesting: 'no-nest', 
    forcePlaceholderSize: true, 
    handle: 'div', 
    helper: 'clone', 
    items: 'li', 
    maxLevels: 3, 
    opacity: .6, 
    placeholder: 'placeholder', 
    revert: 250, 
    tabSize: 25, 
    tolerance: 'pointer', 
    toleranceElement: '> div', 
    update: function() { 
     list = $(this).nestedSortable('toHierarchy', {startDepthCount: 0}); 
     $.post(
      'http://www.domainname.com/ajax/ajax.php', 
      { update_sql: 'ok', list: list }, 
      function(data){ 
       $("#result").hide().html(data).fadeIn('slow') 
      }, 
      "html" 
     ); 
    } 
}); 

그런 다음 당신이 ajax.php 페이지를 만들 필요가 다음과 같이 문제를 AJAX 방식을 해결하려면 코드를 변경해야합니다

<? if (!empty($_REQUEST["list"]) && !empty($_REQUEST["update_sql"])) { 

if ($_REQUEST["update_sql"] = 'ok') { 

    if (!empty($_REQUEST["list"])) { 
     $list = $_REQUEST["list"]; 
     foreach ($list as $key => $value) { 

      mysql_query("UPDATE categories SET order = '" . $key . "' WHERE id = '" . $value['id'] . "'"); 

     } 
     echo '<span class="success">Successfully updated.</span>'; 
    } 
} } ?> 

PHP 코드는 개선 될 수 있습니다 (MySQL 주입 등을 확인하기 위해). 예제에서 제공하는 추가 기능을 필요없는 것처럼 제거 할 수도 있습니다. JavaScript에서 POST URL을 변경하는 것을 잊지 마세요.) 행운을 빌어 요!

+0

안녕하세요! 부모 나 자녀 또는 손자가 속한 테이블과 같은 더 많은 값을 설정하고 캡처하고 전송할 수 있습니까? – antonioj1015

관련 문제