클릭하면 xe_document_voted_log 테이블에서 document_srl 이랑 member_srl이 같은 컬럼을 삭제하려고 합니다.
(쿼리문을 xml로 짜본 것은 3번입니다.)
의도는 추천취소 버튼을 누르면 추천취소함수(즉 해당컬럼삭제함수)가 실행되도록 하려고 합니다.
1. /modules/board/skins/sketchbook5_varycolor/_read.html
{@ $oDB = &DB::getInstance(); $query = $oDB->_query('select * from xe_document_voted_log where member_srl = '.$logged_info->member_srl.' AND document_srl = '.$oDocument->document_srl.''); $result = $oDB->_fetch($query); } <!--@if($result->member_srl==$logged_info->member_srl)--> <a href="javascript:();" onclick="doCallModuleAction('document','procDocumentVoteCancel','{$oDocument->document_srl}');return false;"|cond="$is_logged"> {$oDocument->get('voted_count')} / 추천취소 </a> <!--@else--> <a class="bd_login btn-vote-good" href="#" onclick="doCallModuleAction('document','procDocumentVoteUp','{$oDocument->document_srl}');return false;"|cond="$is_logged" style="border:0px solid #{$mi->color};color:#{$mi->color};"> <b><i class="fa fa-heart"></i> {$oDocument->get('voted_count')}</b> <p>{$lang->cmd_vote}</p> </a> <!--@end-->
스킨에서 procDocumentVoteCancel 함수를 적어서 클릭하면 해당 함수(추천취소함수, 해당컬럼삭제함수)가 실행되게끔 했습니다.
2. /modules/document/document.controller.php
function procDocumentVoteCancel() { // $oDB = &DB::getInstance(); if(!Context::get('is_logged')) return new BaseObject(-1, 'msg_invalid_request'); $document_srl = Context::get('target_srl'); if(!$document_srl) return new BaseObject(-1, 'msg_invalid_request'); $oDocumentModel = getModel('document'); $oDocument = $oDocumentModel->getDocument($document_srl, false, false); $module_srl = $oDocument->get('module_srl'); if(!$module_srl) return new BaseObject(-1, 'msg_invalid_request'); $oModuleModel = getModel('module'); $document_config = $oModuleModel->getModulePartConfig('document',$module_srl); if($document_config->use_vote_up=='N') return new BaseObject(-1, 'msg_invalid_request'); // $point = 1; //$output = $this->cancelDocumentVotedLog($args); // $this->add('voted_count', $output->get('voted_count')); $args = new stdClass(); $args->member_srl = $logged_info->member_srl; $args->document_srl = $document_srl; executeQuery('document.cancelVotedCount', $args); return $output; // $output = $oDB->_fetch($oDB->_query("DELETE FROM document_voted_log WHERE member_srl = // '".$logged_info->member_srl."' AND document_srl = '".$document_srl."' ")); //$output = $oDB->_fetch($oDB->_query("SELECT * FROM 테이블명 WHERE module_srl = '".$module_srl."' ")); // return $output; } function cancelDocumentVotedLog($args){ $args = new stdClass(); $document_srl = Context::get('target_srl'); $oModuleModel = getModel('module'); $document_config = $oModuleModel->getModulePartConfig('document',$module_srl); $args = new stdClass(); $args->member_srl = $logged_info->member_srl; $args->document_srl = $document_srl; executeQuery('document.cancelVotedCount', $args); }
procDocumentVoteCancel 함수를 만들고
cancelDocumentVotedLog 함수가 실행되게끔 했습니다.
이게 젤 오류가 있을 거 같은데 $args의 사용방법이라던가 ㅠㅠ 그런걸 잘 모르겠습니다.
어디서 오류가 있는지 찝어주실 고수분 계실까요..
3. /modules/document/queries/cancelVotedCount.xml
<query id="cancelVotedCount" action="delete"> <tables> <table name="document_voted_log" /> </tables> <conditions> <condition operation="equal" column="document_srl" var="document_srl" filter="number" notnull="notnull" /> <condition operation="equal" column="member_srl" var="member_srl" filter="number" notnull="notnull" pipe="and" /> </conditions> </query>
document_voted_log 테이블에서 document_srl이 같고, member_srl이 같은 컬럼을 삭제하려고 하는데 제대로 짠 xml문이 맞나요?
$logged_info = Context::get('logged_info'); 구문이 있어야해요