$write_table이 작동 안 되는 이유

$write_table이 작동 안 되는 이유

QA

$write_table이 작동 안 되는 이유

본문

아래 코드에서

 

<?php
include_once('./_common.php');
 
$wr_id = $_GET['wr_id'];
 
$sql = "SELECT wr_good, wr_nogood FROM {$write_table} WHERE wr_id = '$wr_id'";
$result = sql_fetch($sql);
 
echo json_encode($result);
?>

 

{$write_table}
가 작동을 안 하는 이유가 무엇일까요?

 

$write_table
로 바꿔도 안 되고요.

 

g5_write_free
로 쓰면 잘 되고요.

 

알림창 띄어서 보니까 $write_table 값은 g5_write_free로 잘 불러오고 있고요 ㅠㅠ

이 질문에 댓글 쓰기 :

답변 5

ajax 호출 페이지(board.php->view.skin.php)와, ajax 처리 페이지(get_votes.php)는 별개입니다.

ajax 처리 페이지에서는 $bo_table, $write_table 이 사전에 정의되어 있지 않기 때문에 그렇습니다.


<?php
include_once('./_common.php');
 
$wr_id = $_GET['wr_id'];
 
$bo_table = 'free';
$write_table = $g5['write_prefix'] . $bo_table;
$sql = "SELECT wr_good, wr_nogood FROM {$write_table} WHERE wr_id = '{$wr_id}'";
$result = sql_fetch($sql);
 
echo json_encode($result);

답변 감사합니다. $bo_table = 'free';로 하면 notice나 gallery에서는 작동이 안 되지 않나요? $write_table로 하려는 이유가 게시판 table 값을 자동으로 불러오고 싶어서인데 혹시 고정된 값이 아니라 게시판마다 다르게 불러오려면 어떻게 해야할까요?

그리고 include_once('./_common.php'); 코드가 있어서 자동으로 $write_table값이 불러와지는 거 아닌가요? common.php에 $write_table 값을 정의하는 함수가 있는 걸로 알아서요.

귀찮게 해서 죄송합니닷 ㅠㅠ

$.ajax({
            url: 'get_votes.php',
            type: 'GET',
            data: { wr_id: wr_id, bo_table : g5_bo_table },
~

식으로 넘겨주고,

get_votes.php 에서
$bo_table = $_GET['bo_table'];

식으로 받아와야 합니다.

아래 코드에서<==이 코드가 있는 화일에 get이든 post든 bo_table 값을 넘겨주면 

common.php에서 $write_table을 만듭니다

넘겨받은 bo_table 값이 없으면 $write_table 값을 만들 수 없습니다

 

그리고 $wr_id = $_GET['wr_id']; <==이건 필요 없는 코드 입니다

get이든 post든 common.php에서 그냥 $wr_id로 바로 사용할 수 있게 만들어 줍니다

 

 

$bo_table = $_GET['bo_table']; 하면 될건데요

$write_table = get_write_table_name($bo_table); 이거 일거에요

common.php 파일을 열어보시면 다음과 같습니다. 

 


$write = array();
$write_table = '';
if ($bo_table) {
    $board = get_board_db($bo_table, true);
    if (isset($board['bo_table']) && $board['bo_table']) {
        set_cookie("ck_bo_table", $board['bo_table'], 86400 * 1);
        $gr_id = $board['gr_id'];
        $write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
        if (isset($wr_id) && $wr_id) {
            $write = get_write($write_table, $wr_id);
        } else if (isset($wr_seo_title) && $wr_seo_title) {
            $write = get_content_by_field($write_table, 'bbs', 'wr_seo_title', generate_seo_title($wr_seo_title));
            if( isset($write['wr_id']) ){
                $wr_id = $write['wr_id'];
            }
        }
    }
    
    // 게시판에서 
    if (isset($board['bo_select_editor']) && $board['bo_select_editor']){
        $config['cf_editor'] = $board['bo_select_editor'];
    }
}

 

위에서 보시면 아래와 같은 부분이 있습니다.

$write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름

 

$bo_table; 란 번수를 받아서 테이블 명을 $write_table 란 변수값으로 할당 하는 부분입니다.

$write_table  에 테이블명이 안만들어진다는건 결국 $bo_table 값의 변수값을 전달 못받았다는 이유가 될수 있습니다.

 

$bo_table 값을 한번 echo 출력해보시고 정상적으로  $bo_table값으로 나오는지 확인해보시면 문제점을 해결하실수 있을겁니다.

 

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 15,429
QA 내용 검색
filter #php ×

회원로그인

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