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

$write_table이 작동 안 되는 이유 채택완료

하호헤하 1년 전 조회 18,973

아래 코드에서

 

<?php</p>

<p>include_once('./_common.php');</p>

<p> </p>

<p>$wr_id = $_GET['wr_id'];</p>

<p> </p>

<p>$sql = "SELECT wr_good, wr_nogood FROM {$write_table} WHERE wr_id = '$wr_id'";</p>

<p>$result = sql_fetch($sql);</p>

<p> </p>

<p>echo json_encode($result);</p>

<p>?></p>

<p>

 

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

 

$write_table
로 바꿔도 안 되고요.

 

g5_write_free
로 쓰면 잘 되고요.

 

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

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

답변 5개

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

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

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

답변에 대한 댓글 3개

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

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

귀찮게 해서 죄송합니닷 ㅠㅠ
마르스컴퍼니
1년 전
$.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'];

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

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

복스리
1년 전

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

 

</p>

<p>$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; // 게시판 테이블 전체이름</p>

<p>        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'];

    }

}</p>

<p>

 

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

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

 

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

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

 

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

 

 

 

 

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

답변에 대한 댓글 1개

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

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

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개

하호헤하
1년 전
감사합니다 균이님!!!!! 모두 다 채택을 해드리고 싶은데 한 분 밖에 채택을 못 해드리네요 ㅠㅠㅠㅠ 복 많이 받으세요!!

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

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

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

답변에 대한 댓글 1개

하호헤하
1년 전
넵 감사합니다 리오닥터님!!! 한 분 밖에 채택을 못 해드리는 게 아쉽네요 ㅠㅠㅠ

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

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

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

답변에 대한 댓글 1개

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

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

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

로그인