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

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

QA

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

본문

기존 설문 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

그냥 쉽게 됩니다.???

3551668203_1687829293.5924.png3551668203_1687829306.7808.png

thumb-3551668203_1687829339.1923_730x235.png

thumb-3551668203_1687829382.1725_730x249.png

건드린건...
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 ?>">
이러게 동일하게 변경 처리 외에는 한 게 없네요

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

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 을 호출하니 당연히 호출할 대상이 없고..그러면 동작하지 않고 오류를 일으킬겁니다.

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;"> </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); ?>  <!-- 기존 설문 -->

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

 

 

호출이 안되구요. 혹시 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" 요파일자체는 안되네요..

안되겠지요...
함수 자체를 호출하지 못하고 include 하지 않으면 그러면 그냥 Newpoll 함수를 poll.lib.php  맨 아래에 추가 하세요..
기존 function poll( 끝난 뒤에 functino Newpoll( 해서 그냥 poll.lib.php 를 가져오는게 나을것같네요

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

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

기존 

<?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;
이러게 변경하니 됩니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 38
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT