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

기존 설문에서 신규 설문 추가가 잘 안됩니다. 채택완료

주퍼 2년 전 조회 1,929

기존 설문 poll에서 ->신규  Newpoll를 신규로 추가해서 해봤습니다.

 

설문페이지 자체가 인쿠르드 되지 않습니다.

 

아래는 문의글에 답변을 주신 분께서 알려 주신 코드로 해보았습니다만 
뭔가 문제 가있을듯 합니다.

 

----- 추가 적인 코드 ----

lib/poll.lib.php 를 lib/newpoll.lib.php 하나 추가 하셔서 그대로 소스 카피 하시고

함수명을 Newpoll 이라고 셋팅 한 뒤에 맨 뒤에 

기존 function poll($skin_dir='basic', $po_id=false)

변경 function poll($skin_dir='basic', $po_id=false, $nm=1)

로 함수 변경 하시고 하단에     include_once ($poll_skin_path.'/poll.skin.php'); 를 newpoll.skin.php 로 변경

후 실제 스킨에서 newpoll.skin.php 생성 후 기존 poll.skin.php 카피 완료 후

/head.php 에 include_once(G5_LIB_PATH.'/poll.lib.php'); 밑에 include_once(G5_LIB_PATH.'/newpoll.lib.php'); 삽입

 

호출하는 명령은 

기존 <?php echo poll('basic', 1); ?>  에서

변경

<?php echo Newpoll('basic1', 1, '1'); ?>

<?php echo Newpoll('basic2', 1, '2'); ?>

<?php echo Newpoll('basic3', 1, '3'); ?>

 

처럼 뒤에 값을 추가 하고 그 값이 적용되어 읽혀지는 skin 안에 newpoll.skin.php 에서 

 

<input type="radio" name="gb_poll" value="<?php echo $i ?>" id="gb_poll<?=$nm?>_<?php echo $i ?>">
<label for="gb_poll<?=$nm?>_<?php echo $i ?>">

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

답변 6개

채택된 답변
+20 포인트
toqurk
2년 전

그냥 쉽게 됩니다.???

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

답변에 대한 댓글 2개

t
toqurk
2년 전
건드린건...
shop.head.php 에 <?php echo poll('shop_basic'); // 설문조사 ?> 이거를 <?php echo poll('shop_basic', '2', '1'); // 설문조사 ?>, <?php echo poll('basic', '2', '2'); // 설문조사 ?> 이러게 변경했구요...
/lib/poll.lib.php 에서 function poll($skin_dir='basic', $po_id=false) 이거를 function poll($skin_dir='basic', $po_id=false, $nm='1') 이러게 변경하고

각각 skin/poll/shop_basic과 basic 에 있는 poll.skin.php 에서
<input type="radio" name="gb_poll" value="<?php echo $i ?>" id="gb_poll_<?php echo $i ?>">
<label for="gb_poll_<?php echo $i ?>">

<input type="radio" name="gb_poll<?php echo $nm;?>" value="<?php echo $i ?>" id="gb_poll<?php echo $nm;?>_<?php echo $i ?>">
<label for="gb_poll<?php echo $nm;?>_<?php echo $i ?>">
이러게 동일하게 변경 처리 외에는 한 게 없네요
주퍼
2년 전
네. 신경써 주셔서 감사합니다. 쪽지 드렸습니다.

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

toqurk
2년 전

읽지 않으셔서 이쪽에 글 남겨드립니다.

기존 

<?php for ($i=1; $i<=9 && $po["po_poll{$i}"]; $i++) {  ?>
            <li class="chk_box">
        <input type="radio" name="gb_poll" value="<?php echo $i ?>" id="gb_poll_<?php echo $i ?>">
        <label for="gb_poll_<?php echo $i ?>">
        <span></span>
        <?php echo $po['po_poll'.$i] ?>
        </label>
        </li>
            <?php }  ?>

 

변경

<input type="hidden" name="nm" id="nm" value="<?php echo $nm;?>">
            <?php for ($i=1; $i<=9 && $po["po_poll{$i}"]; $i++) {  ?>
            <li class="chk_box">
        <input type="radio" name="gb_poll<?php echo $nm;?>" value="<?php echo $i ?>" id="gb_poll<?php echo $nm;?>_<?php echo $i ?>">
        <label for="gb_poll<?php echo $nm;?>_<?php echo $i ?>">
        <span></span>
        <?php echo $po['po_poll'.$i] ?>
        </label>
        </li>
            <?php }  ?>

 

스크립트

function fpoll_submit 함수 안에

    var chk = false;

    ..생략
    if (!chk) {
해당 영역을

    var chk = false;
    var nm = "<?php echo $nm;?>";
    var poll_name = "gb_poll"+nm;
    for (i=0; i<f.poll_name.length;i ++) {
        if (f.poll_name[i].checked == true) {
            chk = f.poll_name[i].value;
            break;
        }
    }

    if (!chk) {
변경 하시고요..

/bbs/poll_update.php

안에

$gb_poll = isset($_POST['gb_poll']) ? preg_replace('/[^0-9]/', '', $_POST['gb_poll']) : 0;
해당 영역을

$poll = $_POST['gb_poll'].$_POST['nm'];

$gb_poll = isset($poll) ? preg_replace('/[^0-9]/', '', $poll) : 0;
이러게 변경하니 됩니다.

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

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

2년 전

자세한 설명과 답변주셔서 감사합니다. 알려주신 방법으로 다시 한번 해보겠습니다.^^

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

답변에 대한 댓글 1개

t
toqurk
2년 전
그래도 안되시면 원격으로 라도 도와드릴수 있습니다.

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

2년 전

newpoll.lib 신규 추가하고 알려주신 내용을 반영한 소스 내용 ------>

 

<?php
if (!defined('_GNUBOARD_')) exit;

// 설문조사
//function poll($skin_dir='basic', $po_id=false, $nm=1)
function Newpoll($skin_dir='basic', $po_id=false, $nm=1)
{
    global $config, $member, $g5, $is_admin;

    // 투표번호가 넘어오지 않았다면 가장 큰(최근에 등록한) 투표번호를 얻는다
    if (!$po_id) {
        $row = sql_fetch(" select MAX(po_id) as max_po_id from {$g5['poll_table']} where po_use = 1 ", false);
        $po_id = isset($row['max_po_id']) ? $row['max_po_id'] : 0;
    }

    if(!$po_id)
        return;

    if(preg_match('#^theme/(.+)$#', $skin_dir, $match)) {
        if (G5_IS_MOBILE) {
            $poll_skin_path = G5_THEME_MOBILE_PATH.'/'.G5_SKIN_DIR.'/poll/'.$match[1];
            if(!is_dir($poll_skin_path))
                $poll_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/poll/'.$match[1];
            $poll_skin_url = str_replace(G5_PATH, G5_URL, $poll_skin_path);
        } else {
            $poll_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/poll/'.$match[1];
            $poll_skin_url = str_replace(G5_PATH, G5_URL, $poll_skin_path);
        }
        //$skin_dir = $match[1];
    } else {
        if (G5_IS_MOBILE) {
            $poll_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/poll/'.$skin_dir;
            $poll_skin_url  = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/poll/'.$skin_dir;
        } else {
            $poll_skin_path = G5_SKIN_PATH.'/poll/'.$skin_dir;
            $poll_skin_url  = G5_SKIN_URL.'/poll/'.$skin_dir;
        }
    }

    $po = sql_fetch(" select * from {$g5['poll_table']} where po_id = '$po_id' and po_use = 1 ");

    ob_start();
    include_once ($poll_skin_path.'/newpoll.skin.php');
    $content = ob_get_contents();
    ob_end_clean();

    return $content;
}

 

-----> 설문조사 불러오는 부분

 

<?php
include_once('./_common.php');
?>
<?php include_once('./_head.php'); ?>
<p style="line-height:20px;">&nbsp;</p>
<div class="row" style="line-height: 30px; padding:10px;   text-align:center; margin-right: 2px; border-radius: 5px; background-color: #FFFFFF; box-shadow: 0px 0px 13px #C3C3C3;">    
    
<div class="col-sm-12 col-xs-12 col-xs-12" style="text-align:left;">
<div style="line-height: 30px; font-size: 24px; padding: 10px;  color: #000000; font-weight:bold; " >
<div>
    <p style="margin-top: 15px;">설문조사 헤드</p>
</div>
</div>
</div>
    
</div>                

상단10
<?php echo Newpoll('basic', 1, '1'); ?>
상단20
<?php echo Newpoll('basic2', 2, '2'); ?>
상단30
<?php echo Newpoll('basic3', 3, '3'); ?>

----------------------

<?php// echo poll('basic', 1); ?>  <!-- 기존 설문 -->

-----------------------

 

 

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

답변에 대한 댓글 3개

t
toqurk
2년 전
<?php echo Newpoll('basic', 1, '1'); ?>
호출이 되나요?
주퍼
2년 전
호출이 안되구요. 혹시 newpoll.lib <-- 요기 새로만든 파일 자체가 연동이 안되는 듯하네요.. 기존 poll.lib에서 -> function Newpoll($skin_dir='basic', $po_id=false)... 이렇게 해주고 하단 호출에 -> include_once ($poll_skin_path.'/newpoll.skin.php'); 이렇게 해서 메인 호출시 -> <?php echo Newpoll('basic', 1, '1'); ?> 하면 안되서 다시 <?php echo Newpoll('basic', 1); ?> 하니 호출은 되는데 스타일시트가 깨진는 현상입니다. 기존에 "poll.lib" 를 사용하는데 혹시 중복체크만 할 수 있나요?? 새로 만든 "newpoll.lib" 요파일자체는 안되네요..
t
toqurk
2년 전
안되겠지요...
함수 자체를 호출하지 못하고 include 하지 않으면 그러면 그냥 Newpoll 함수를 poll.lib.php 맨 아래에 추가 하세요..
기존 function poll( 끝난 뒤에 functino Newpoll( 해서 그냥 poll.lib.php 를 가져오는게 나을것같네요

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

toqurk
2년 전

1. 설문페이지 자체가 인쿠르드 되지 않습니다.

=> 모든 include 되는 영역이나 define 한 파일 모두 추가 작업 하셔야 합니다.

 

2. 소스 코드

기존 function poll($skin_dir='basic', $po_id=false)

변경 function Newpoll($skin_dir='basic', $po_id=false, $nm=1)

=> 함수 명을 추가 해서 장착하세요.

 

함수는 기존과 동일하게 poll 인데 <?php echo Newpoll('basic1', 1, '1'); ?> Newpoll 을 호출하니 당연히 호출할 대상이 없고..그러면 동작하지 않고 오류를 일으킬겁니다.

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

답변에 대한 댓글 1개

주퍼
2년 전
넵. 감사합니다. 알려주신 방법대로 해도 잘 안되네요.

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

플라이
2년 전

위 부분만으로는 정확한 체크가 되지는 않지만 해당 설문 인클루드 하는 과정이나 적용하는 과정중에 오류가 있어 표기가 안되는듯하니 오류를 표기하도록 해서 오류를 체크해 디버깅을 해보셔야 할듯 합니다.

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

답변에 대한 댓글 1개

주퍼
2년 전
답변감사합니다. 확인해보겠습니다.

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

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

로그인