2013-04-27 2 views
0

를 전송하고 처리하는 가장 좋은 방법은 ...가변 크기 데이터를이 페이지에서

http://lab.2toria.com/reflex/index2.php

사용자가 드래그 그리드에 블록을 떨어졌다, 나는 약간의 위치를 ​​보낼 수 있도록하려면 양식을 단순히 좌표 (예 : "x1y2", "x1y3"등)를 행에 기록하는 테이블에 저장하는 PHP 스크립트로 변환 할 수 있습니다. 내 테이블의 필드는 지금까지 아주 단순했습니다 (blockID, blockCoords)

어떻게해야할까요? 두 가지에 대한 의견을 듣고 있습니다. -

1) jQuery ajax를 사용하여 어떻게 좌표를 포함하는 문자열을리스트로 보낼 수 있습니까? 그것은 XML 문자열을 만드는 것이 가장, 또는 거기에 내가 생각하지 한 또 다른 방법입니다 ... 그리고 어떻게 할 것이겠습니까이

하고 ... 보내는 데 사용되는 방법에 따라

2) 데이터 (xml, 또는 뭐든간에), 어떻게하면 테이블에 데이터를 저장하기 위해 수신 PHP 스크립트에서 데이터를 처리 할 것인가? 레코드 등을 저장하는 방법을 알고 있습니다.이 상황을 어떻게 처리하는 것이 가장 좋은지 알고 싶습니다.

답변

1
$('element').droppable({ 
    drop:function(event, ui){ 
     $.ajax({ 
      url: '/path/to/my/file.php', 
      type: 'POST', 
      data: {'left' : ui.helper.position().left, 
        'top': ui.helper.position().top}, 
      success: function(data){ 
       //do something with the response from the server 
      } 
     }); 
    } 
}); 

jQuery Post 그리고

if(isset($_POST['left'])): 
    $db = new mysqli('connection info here'); 
    $q = $db->prepare('INSERT INTO some_table (left, top) VALUES (?,?)'); //prepare the statement 
    $q->bind_param('ss', $_POST['left'], $_POST['top']); //safe binding 
    if(FALSE !== $q->execute()): 
     return 'Query Executed!'; 
    endif; //execute the statement 
    return false; 
endif; 

/path/to/my/file.php에 따라서 PHP 파일에 우리가 단순히 $_POST 변수 left의 존재를 확인하고 있습니다. top도 사용할 수 있다고 가정합니다. 우리는 mysqli 연결을 만들고, 안전한 진술을 준비하고, left/topvalues를 사용하여 매개 변수를 strings으로 바인딩합니다. 그런 다음 실행이 false를 반환하지 않았는지 (true/false를 반환하는지) 확인합니다. 그렇지 않은 경우 값을 전달하고 조건을 모두 빠져 나옵니다. 그렇지 않은 경우 false가 반환됩니다. 그뿐만 아니라 쉽게 해 드리겠습니다 실제로 삽입을 수행 할 준비가 될 때까지 귀하의 코멘트에서

편집

, 당신은 사용자가 수행하는 작업을 저장합니다.

var dc = 0, 
    drops = {}; 

dcdropcount 것이며, drops 개체 것이다.

$('element').droppable({ 
    drop: function(event, ui){ 
     drops[dc] = {'left' : ui.helper.position().left, 'top' : ui.helper.position().top}; 
     dc++; 
    } 
}); 

은 상기에서 우리는 단지 각 드롭 왼쪽 위/값에 대한 정보를 저장하고 상기 객체를 통해 증가 drops.

$('.save').click(function(e){ 
    e.preventDefault(); 
    $.ajax({ 
     url: 'test.php', 
     type: 'POST', 
     data: {'drops': drops}, 
     success: function(data){ 
      console.log(data); 
     } 
    }); 
}); 

여기에는 save 클래스가있는 save 버튼이 있습니다. 우리는 기본 조치를 취하지 않습니다. 그런 다음 drops 객체를 서버에 보냈습니다.

if(isset($_POST['drops'])): 
    //same process as outlined above, use a helper function to insert the rows 
endif; 

이제 우리는 $ _POST 변수 'drops'가 있는지 확인합니다. 위와 동일한 전술을 사용합니다. 도우미 function saveDrops($obj)을 추천하고 반환 된 방울을 반복하고 전달 된 각 obj에 대해 저장 작업을 수행하십시오.

+0

이것은 '당신이가는대로 저장'하는 것 같습니다. 나는 위와 같은 생각을하지 않았습니다. (감사합니다 ..).하지만 모든 좌표를 하나의 파일로 보내고 처리하려면 어떻게해야합니까? ? –

+0

@Mat Richardson 그래서 자바 스크립트에서 객체의 좌표를 잡고 싶다고 말하면 사용자가 '최종'동작을 수행 할 때 실제로 삽입 할 것인가? – Ohgodwhy

+0

그래, 사용자가 '수준 저장'버튼을 클릭하면 배치 된 블록의 좌표 목록 (또는 무언가)을 페이지에서 생성하고 작업 로트로 저장하기 위해 PHP 스크립트로 보냅니다. –

0

1) 예, jQuery ajax를 사용하여 좌표와 블록 ID를 게시하십시오.

2) $ _POST 변수에서 PHP로 사용할 수 있습니다.

은 참조 :

+0

좌표를 게시하는 가장 좋은 방법은 무엇입니까? 예를 들어 좌표 x1y1, x2y2 등을 보내려면이 작업을 수행하는 가장 좋은 방법은 무엇입니까? xml 파일로, 예를 들어, 어떻게? –

+0

@ Ohgodwhy의 대답은 피 묻은 환상적입니다. –