https://xe1.xpressengine.com/qna/22377789

 

위 글과 매우 유사한데... 댓글이 없어서 힌트를 얻을만한 부분이 없더군요. 

 

XE의 특정 버튼이나 페이지를 들어가면 포인트가 차감되고, 다른 DB에 차감된 만큼 증가시키고 싶습니다.  

  • profile
    뭐든 가능하지 않을까 싶습니다.

    PHP로 코드를 짜서, 해당 멤버의 포인트 가져오고, 일정 포인트 만큼 차감한다음 특정 DB에 증가 시켜주면 되는거고..

    만약, 회원의 포인트가 차감할 포인트 보다 적을 경우, 변경&전환 할 수 없습니다.
    띄우면 되는거구요.

    막 어렵게 생각할 필요 없습니다.
  • profile profile
    php로 접근해보면 되는거군요. 배워본건 야매코딩이 전부라... 한참 걸리겠네요 감사합니다
  • profile profile
    코드를 작성해드릴 순 있지만, 사실 그렇게 하면 실력도 안늘기에..
    구글링 하면서 배워가시는거 추천해드리고..(사실 지금 다른 개발중이라..)

    PHP에서 XE로 접근하게끔 할 수 있는 함수가 있어서, 그거 사용하시면 될거에요 어렵지 않습니다 ^-^
  • profile
    포인트 차감이 성공적으로 끝나면 그후에 디비에 쏴주는 방법을 생각하시면 될꺼에요 .
  • profile

    <?

    //외부 php에서 xe의 함수, 변수를 사용하기 위한 선언
        define('__XE__',true);
        require_once("../../xe/config/config.inc.php"); //위치는 이 파일의 위치에 따라서 수정

        $oContext = &Context::getInstance(); //음 뭔지 모르지만 같이 있었네요.
        $oContext->init();

     

        $logged_info = Context::get('logged_info');

        $member_srl = $logged_info->member_srl; //로그인 정보에서 회원의 srl을 가져옵니다. 아래 부분에 if문으로 srl이 있어야 동작하도록 추가해야겠죠?

     

        $oPointModel = &getModel('point'); //포인트 모듈을 불러오고
        $point = $oPointModel->getPoint($member_srl); // 위에서 알아낸 회원의 포인트를 가져옵니다.

    //포인트가 부족한 경우를 대비하여 아래에 위 변수를 가지고 if문으로....

     

        $point2 = 100; //더하거나 뺄 포인트
        $action = 'minus'; //'add'는 캐쉬 적립 , 'minus'는 캐쉬 차감 , 'update'는 캐쉬 수정;
        $oPointController = &getController('point');
        $oPointController->setPoint($member_srl, $point2, $action);

     

    //여기부터는 xe가 아닌 다른 db의 동작을 하면 되겠네요~
    ?>

     

    핵심 코드만 적어봤습니다.

    비슷한 작업을 예전에 했었어요~

  • profile profile
    $oContext = &Context::getInstance();
    이부분은 XE함수를 사용하기 위해서 존재합니다.

    Context 클래스를 호출하는 것이지요.
  • profile profile
    오!! 그렇군요. 반드시 필요한거였군요!
  • profile profile
    감사합니다...왜 자꾸 $point 값이 안불러와지나 했더니 따로 XE변수를 쓰게 하는 선언이 필요했던거군요