묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
XML Query 문법 (select) 포인트가 2점뿐이네요
2010.07.19 22:03
아래는 test.addon.php 의 내용
if($called_position == 'after_module_proc'){ if ($this->act == 'procBoardInsertDocument') { $getLastDocument_srl=@mysql_fetch_array(mysql_query('select document_srl from xe_documents where module_srl = \''.$this->module_srl.'\' order by document_srl desc limit 1')); unset($args); $args->module_srl = $this->module_srl; $args->sort_index = 'list_order'; $args->list_count = 1; $output = executeQueryArray('addons.test.getLastDocument', $args); } }
아래는 getLastDocument.xml
<query id="getLastDocument" action="select"> <tables> <table name="documents" /> </tables> <columns> <column name="document_srl" /> </columns> <conditions> <condition operation="equal" column="module_srl" var="module_srl" filter="number" notnull="notnull" /> </conditions> <navigation> <index var="sort_index" default="document_srl" order="desc" /> <list_count var="list_count" default="1" /> </navigation> </query>
글을 등록하고 나서 바로 마지막 Insert된 document_srl 을 구해와서 어떤 작업을 해야합니다.
일반 php식으로 $getLastDocument_srl을 해봤는데 잘 됩니다. 이걸 XML Query로 바꿔서 할려고 하는데
잘 되지 않습니다. 문법이 맞는지도 모르겠고 sort_index의 의미도 모르겠고 operation="equal"이것도 뭔지 모르겠고....
list_count는 limit 1과 비슷한 기능같긴한데...
document_srl이 bigint 에다 auto_increment도 아니어서 mysql_insert_id도 안먹고...
아~ 정말 너무 어렵습니다. 문법 틀린부분 한번 봐주시구요.. 마지막 Insert된 document_srl을 구하는 더 좋은 방법이 있으면
좀 알려주세요...ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
아 그리고 값은 $output->data['document_srl']이렇게 담아지는게 맞죠?
댓글 1
-
라르게덴
2010.07.19 23:31
-
Alone
2010.07.20 01:26
디버그 해보니 도움이 되었습니다. $args->sort_index = 'list_order'; 이게 아니라 $args->sort_index = 'document_srl'; 이렇게 해야 맞네요 executeQueryArray 의 출력방법이 $output->data['document_srl'] 이게 아닌거 같네요 (뭔지는 모르겠습니다.) 그래서 executeQuery 이걸로 수정하고 출력은 $output->data->document_srl 이렇게 하니까 잘 나오네요
구하는 방법은 맞는듯 보이는데요.
디버그를 해가면서 찾아가시는게 좋을 법 합니다.
debugPrint($output); 위 애드온 내용에서 마지막 쿼리 던지고 그 밑에서 이걸 쓰셔서 디버그 값을 확인해보세요.
에러라면 뭐가 잘 못 되었는지 나타납니다.
xe/config/config.inc.php에서 49줄에 1번으로 바꾸시고 64번이나 65번줄을 주석 설명에 따라설정 후 방금 위에 적은 코드를 실행하면
files/폴더에 생성되니 참고해서 만들어보시길 바래요.