테스트 사이트 - 개발 중인 베타 버전입니다

룰렛 이벤트 결과를 게시판에 자동으로 작성하고 싶습니다. 채택완료

마주닝 4년 전 조회 4,992

룰렛페이지 결과를 게시판과 연결해서

룰렛 결과를 게시판 제목으로 게시글을 등록하려고 합니다.

 

회원 여부와 중복참여 구분은 게시글 작성 권한과 게시글 최대 작성 수로 진행할 계획인데,

 

룰렛페이지에서 게시판으로 결과를 넘기는게 문제네요 ㅠ

 

</p>

<pre>
<code>require([
    "App",
], function( App ) {
    var _btnStart;
    var _roll_bg;
    var _items;
    var _mTime;
    function init()
    {
        create();
        addEvent();
    }
    function create()
    {
        _btnStart = $( ".btn_start" );
        _roll_bg = $( ".roll_bg" );
        _items = [ "포인트 30P", "할인쿠폰 10%", "무료반품 FREE", "할인쿠폰 30%", "선물쿠폰 1+1", "할인쿠폰 20%", "더블적립 x2", "결제금액 100% 페이백" ];
        _mTime = 1;
    }
    function addEvent()
    {
        _btnStart.on( "click", btnStartClick );
    }
    function btnStartClick( $e )
    {
        spinMotion();
    }
    var _count = 0;
    //움직이는 모션
    function spinMotion()
    {
        TweenMax.to( _roll_bg, _mTime, { rotation:360,    ease:Power0.easeInOut, onComplete:function(){
            TweenMax.set(  _roll_bg, { rotation:0 });
            _count ++;
            if( _count > 0 ){
                randomValue();
                return;
            }
            spinMotion();
        }});
    }
    //결과값 추출
    function randomValue(){
        var ran = parseInt( Math.random() * _items.length );
        angleCount( ran );
    }
    //결과값 맞게 움직이는 모션
    function angleCount( $ran )
    {
        TweenMax.killTweensOf( _roll_bg );
        TweenMax.set( _roll_bg, { rotation:0 });
        var angle =  360 / _items.length;
        TweenMax.to( _roll_bg, _mTime, { rotation: $ran * angle  , ease:Power0.easeInOut, onComplete:function(){
            alert( _items[ $ran ] +  " 당첨 되었습니다"  );
        }});
    }
    $( document ).ready( function(){
        init();
    });

});
</code>

 

_items[ $ran ] <- 요 결과값으로 게시글이 자동으로 작성될 방법이 있을까요?

요 소스코드 파일이 .js 확장자라 

alert 부분을 아래와 같이

</p>

<p><code>function angleCount( $ran )

    {

        TweenMax.killTweensOf( _roll_bg );

        TweenMax.set( _roll_bg, { rotation:0 });</code></p>

<p><code>        var angle =  360 / _items.length;

        TweenMax.to( _roll_bg, _mTime, { rotation: $ran * angle  , ease:Power0.easeInOut, onComplete:function(){

          $.ajax({

       type: "POST",

       url: "./post.php",

       async : true,

       data: {

         "wr_subject": _items[ $ran ]

     },

       dataType: 'html',

       success: function(data){

           if(data=='success'){

             alert( _items[ $ran ] +  " 당첨 되었습니다");

           }else{

             alert('실패');

           }

       }

   });</code></p>

<p><code>        }});

    }</code></p>

<p>

 

이런식으로 post.php에 넘겨주고,

 

post.php에선 이런식으로 작성을 하는건지.. 

영 감이 안잡힙니다..

</p>

<p><?php

define('_INDEX_', true);

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

include_once(G5_PATH.'/head.php');</p>

<p>$keystring = uniqid();

set_session("ss_captcha_count", 0);

set_session("ss_captcha_key", $keystring);

$captcha_key = $_POST['captcha_key'] = get_session('ss_captcha_key');

?></p>

<p><?$subject=$_POST['wr_subject']; ?>

<input type="hidden" name="uid" value="<?php echo get_uniqid(); ?>" id="uid">

<input type="hidden" name="w" value="<?php echo $w ?>" id="w">

<input type="hidden" name="bo_table" value="test" id="bo_table">

<input type="hidden" name="wr_id" value="<?php echo $wr_id ?>"  id="wr_id">

<input type="hidden" name="wr_subject" value="<?php echo $subject ?>" id="wr_subject"></p>

<p><script>

    var token = f.token.value;

        var uid = "uid="+$("#uid").val();

        var w = "w="+$("#w").val();

        var bo_table = "bo_table="+$("#bo_table").val();

        var wr_id = "wr_id="+$("#wr_id").val();

        var wr_subject = "wr_subject="+$("#wr_subject").val();</p>

<p>

    $.ajax({

            url: g5_bbs_url+"/write_update.php",

            type: "POST",

            data: {

                "ajax_write": 'y',

                "token": fwrite.token.value,

                "uid": fwrite.uid.value,

                "w": fwrite.w.value,

                "bo_table": fwrite.bo_table.value,

                "wr_id": fwrite.wr_id.value,

                "wr_subject": fwrite.wr_subject.value,

            },

            dataType: "text",

            error: function(xhr, status, error){

                alert(error);

            },

            async: false,

            cache: false,

            success : function(data){

                if(data=='success'){

                    alert('등록되었습니다.');

                }else{

                    alert('실패');

                }

                $("#fwrite")[0].reset();

            }</p>

<p>        });

    }</p>

<p>/*</p>

<p>$(function() {

    $('.btn_submit').click(function(){</p>

<p>

    });

});

*/

</script></p>

<p><?php

include_once(G5_PATH.'/tail.php');

?>

 

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트

음... 쉽게 간단하게 생각해봅시다!! 우선

_items[$ran]이값이 제대로 나오는거죠? 콘솔로그로 확인했을때 데이터가 있는거면 룰렛으로 돌리면 얼랏창 뜨잖아요

$('name="wr_subject"]').val(_items[$ran]) 이렇게

angleCount 함수 내부에 잘 넣어주세요!! (어딘진 질문자가 잘 아시겠죠) 이러고 얼랏창이 끝나면 wr_subject 인풋창에 값이 들어갈거에요 게시판 제목에만 값이 정상적으로 들어가면 되는거잖아요 그리고 ajax 써도 되긴한데 간단한거면 안쓰고 바로 데이터만 전달하면되여! 너무 어렵게 생각하는게 아닌가 생각되네요 맨위에 있던 룰렛 소스는 꼭 게시판 내부에서 넣어주세요

 

 

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

마주닝
4년 전
답변 감사합니다~~
ajax로 값을 넘겨주려 했던 이유가
게시판은 사용자들에게 안보여주려고 했거든요 ㅠ

답변 주신 내용을 이해해보자면
룰렛을 게시판에 설치하라는 말씀이신가요?
릴보이즈
4년 전
ajax를 이중으로 한적은 없는데.. 제 생각엔 angleCount 함수에서 ajax 로 바로 컨펌으로 올려주세요
그리고 post.php 내부에 보면 ajax 소스를 angleCount함수에 넣으세요 post.php를 쓸필요 없어요

g5_bbs_url+"/write_update.php" 여기 경로로 ajax 데이터 넘겨주라는 뜻이에요 응용 잘하면 되요
마주닝
4년 전
[code]
function angleCount( $ran )
{
TweenMax.killTweensOf( _roll_bg );
TweenMax.set( _roll_bg, { rotation:0 });

var angle = 360 / _items.length;
TweenMax.to( _roll_bg, _mTime, { rotation: $ran * angle , ease:Power0.easeInOut, onComplete:function(){
alert(_items[$ran]+'당첨되습니다.');
var token = f.token.value;
var uid = "uid="+$("#uid").val();
var w = "w="+$("#w").val();
var bo_table = "bo_table="+$("#bo_table").val();
var wr_id = "wr_id="+$("#wr_id").val();

$.ajax({
url: "../bbs/write_update.php",
type: "POST",
data: {
"ajax_write": 'y',

"uid": fwrite.uid.value,
"w": fwrite.w.value,
"bo_table": fwrite.bo_table.value,
"wr_id": fwrite.wr_id.value,
"wr_subject": "_items[$ran]"
},
dataType: "text",
error: function(xhr, status, error){
alert(error);
},
async: false,
cache: false,
success : function(data){
if(data=='success'){
alert('등록되었습니다.');
}else{
alert('실패');
}
$("#fwrite")[0].reset();
}

});

}});
}
[/code]
index에 그누보드 헤더랑 게시판 테이블 같은 게시글 작성에 필요한 값은 다 넣어뒀습니다.
해당 js 파일을 index에 불러오는 구조인데 그래도 작동을 할까요?
그리고
앵글카운트 함수에 이렇게 작성하는게 맞을까요?
작동을 안하네요 ㅠ
또, 토큰은 어떻게 해결을 해야할까요?
릴보이즈
4년 전
그냥 차라리 따로 에이젝스 페이지를 만들어서 인설트 쿼리 날려줄정도로만 하세요 write_update.php 여기 내부에 보면 글쓰기 쿼리 가져다가 쓰면되요

댓글을 작성하려면 로그인이 필요합니다.

//결과값 추출

    function randomValue(){

        var ran = parseInt( Math.random() * _items.length );

        angleCount( ran );

    }

==

보안이 필요한 상황이 아니라면 상관 없지만...

아니라면 방식을 아예 바꾸어야 합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

엑스엠엘
2년 전
ajax로 결과를 받아 와서 화면 처리 하시고
PHP 에서 랜덤, 글쓰기룰 처리하세요.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인