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

도와주세요 ^ㅛ^

Infinity 2개월 전 조회 601

안녕하세요

질문 드릴게요

sql 구조 행 등등 다 추가 했는데

 

</p>

<p><?php

if (!defined('_GNUBOARD_')) exit;</p>

<p>/**

 * 'job' 게시판 글쓰기/수정 완료 후, 추가 정보를 g5_job_post 테이블에 저장하는 이벤트

 */

add_event('write_update_after', 'save_job_post_custom_data_and_redirect', 10, 2);</p>

<p>function save_job_post_custom_data_and_redirect($bo_table, $wr_id) {

    

    // 이 기능은 'job' 게시판에서만 작동하도록 제한합니다.

    if ($bo_table !== 'job' || !$wr_id) {

        return;

    }

    

    global $member; // 로그인한 회원 정보를 사용하기 위해 global 선언</p>

<p>    // 1. write.skin.php 폼에서 전송된 모든 추가 데이터(_POST)를 받습니다.

    $shop_name     = isset($_POST['shop_name']) ? trim($_POST['shop_name']) : '';

    $shop_address  = isset($_POST['shop_address']) ? trim($_POST['shop_address']) : '';

    $shop_address2 = isset($_POST['shop_address2']) ? trim($_POST['shop_address2']) : '';

    $full_address  = $shop_address . ($shop_address2 ? ' ' . $shop_address2 : ''); // 기본주소와 상세주소 합치기

    $shop_phone    = isset($_POST['shop_phone']) ? trim($_POST['shop_phone']) : '';

    $gender        = isset($_POST['gender']) ? trim($_POST['gender']) : '';

    $age_start     = isset($_POST['age_start']) ? (int)$_POST['age_start'] : 0;

    $age_end       = isset($_POST['age_end']) ? (int)$_POST['age_end'] : 0;

    $career        = isset($_POST['career']) ? trim($_POST['career']) : '';

    $salary_type   = isset($_POST['salary_type']) ? trim($_POST['salary_type']) : '';

    $salary_amount = isset($_POST['salary_amount']) ? (int)$_POST['salary_amount'] : 0;

    $adType        = isset($_POST['ad_type']) ? trim($_POST['ad_type']) : '';

    $adDuration    = isset($_POST['ad_duration']) ? (int)$_POST['ad_duration'] : 0;

    $totalPrice    = isset($_POST['base_price']) ? (int)$_POST['base_price'] : 0;</p>

<p>    // 2. 체크박스 배열(array) 데이터를 콤마(,)로 구분된 문자열(string)로 변환합니다.

    $jp_themes_str = '';

    if (isset($_POST['jp_themes']) && is_array($_POST['jp_themes'])) {

        $jp_themes_str = implode(',', $_POST['jp_themes']);

    }

    $jp_work_options_str = '';

    if (isset($_POST['jp_work_options']) && is_array($_POST['jp_work_options'])) {

        $jp_work_options_str = implode(',', $_POST['jp_work_options']);

    }</p>

<p>    // 3. g5_job_post 테이블에 저장할 데이터를 배열로 정리합니다.

    $sql_data = [

        'bo_table'          => $bo_table,

        'wr_id'             => $wr_id,

        'mb_id'             => $member['mb_id'],

        'jp_shop_name'      => $shop_name,

        'jp_address'        => $full_address,

        'jp_phone'          => $shop_phone,

        'jp_themes'         => $jp_themes_str,

        'jp_gender'         => $gender,

        'jp_age_start'      => $age_start,

        'jp_age_end'        => $age_end,

        'jp_career'         => $career,

        'jp_salary_type'    => $salary_type,

        'jp_salary_amount'  => $salary_amount,

        'jp_work_options'   => $jp_work_options_str,

        'jp_ad_type'        => $adType,

        'jp_ad_duration'    => $adDuration,

        'jp_total_price'    => $totalPrice,

        'jp_datetime'       => G5_TIME_YMDHIS

    ];

    

    // 4. SQL 쿼리를 생성합니다.

    $sql_fields = implode(", ", array_keys($sql_data));

    

    $escaped_values = [];

    foreach(array_values($sql_data) as $value) { 

        $escaped_values[] = "'" . sql_real_escape_string((string)$value) . "'"; 

    }

    $sql_values = implode(", ", $escaped_values);

    

    $update_pairs = [];

    foreach ($sql_data as $key => $value) {

        if ($key === 'wr_id' || $key === 'bo_table' || $key === 'mb_id') continue;

        $update_pairs[] = "{$key} = '" . sql_real_escape_string((string)$value) . "'";

    }

    $update_sql = implode(", ", $update_pairs);</p>

<p>    $sql = "INSERT INTO g5_job_post ({$sql_fields}) VALUES ({$sql_values}) ON DUPLICATE KEY UPDATE {$update_sql}";

    

    // 5. 쿼리를 실행하여 DB에 저장합니다.

    sql_query($sql);</p>

<p>    // ★★★★★ 6. 데이터 저장 후 '광고관리' 페이지로 강제 이동! ★★★★★

    goto_url(G5_URL.'/ad_management.php');

}

?></p>

<p>

 

이렇게 custom_job_board.extend.php 라고 만들었는데

글쓰기후 db에 저장이 되질 않습니다;

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

답변 2개

2개월 전

위  화일 실행은 어디서 어떻게  하게 되어있는가요?

 

function save_job_post_custom_data_and_redirect

이 함수에 $_POST 값이 전달 되지않아서이겠네요

 

이 함수 호출시와 함수 파라메터에 $_POST를 추가하세요

함수호출시

save_job_post_custom_data_and_redirect(~~~~~, $_POST); 

함수에서

function save_job_post_custom_data_and_redirect(~~~~~~~, $_POST){

 

코드가 정상 실행 되는지 확인은

sql_query($sql , true); //--- true 추가

 

 

 

 

 

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

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

2개월 전

echo $sql;
exit;


이렇게해서 출력해 보세요
어떻게 들어가고 있는지
만약 보이지 않는다면 윗쪽 부분에서 문제가 있는것입니다.

맨위에 아래 코드를 넣어서 오류를 출력 해보세요

ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);


 

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

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

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

로그인