채택완료

$write_table이 작동 안 되는 이유

2024-06-26 (수) 19:59:32 19,791

아래 코드에서

Copy
<?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);

?>
Copy
{$write_table}
가 작동을 안 하는 이유가 무엇일까요?
Copy
$write_table
로 바꿔도 안 되고요.
Copy
g5_write_free
로 쓰면 잘 되고요.

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

|

답변 5개 / 댓글 7개

채택된 답변
+20 포인트
2024-06-26 (수) 20:14:35

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

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

Copy
<?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);

답변에 대한 댓글 3개

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

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

귀찮게 해서 죄송합니닷 ㅠㅠ
2024-06-26 (수) 20:59:02
$.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'];

식으로 받아와야 합니다.
와우... 바로 해결됐습니다. 정말 정말 감사합니다. 복 많이 받으십시오!!

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

Copy
$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값으로 나오는지 확인해보시면 문제점을 해결하실수 있을겁니다.

답변에 대한 댓글 1개

넵 감사합니다 복스리님!! 한분밖에 채택을 못해드리는 게 아쉽네요 ㅠㅠ

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

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

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

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

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

답변에 대한 댓글 1개

감사합니다 균이님!!!!! 모두 다 채택을 해드리고 싶은데 한 분 밖에 채택을 못 해드리네요 ㅠㅠㅠㅠ 복 많이 받으세요!!
2024-06-26 (수) 21:02:40

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

답변에 대한 댓글 1개

넵 감사합니다 리오닥터님!!! 한 분 밖에 채택을 못 해드리는 게 아쉽네요 ㅠㅠㅠ
2024-06-26 (수) 20:36:46

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

답변에 대한 댓글 1개

감사하빈다 뽕엄능브라님!! 그것도 시도해봣는데 안 됐었어요 ㅠㅠ

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