도와주세요 ^ㅛ^

도와주세요 ^ㅛ^

QA

도와주세요 ^ㅛ^

답변 2

그누보드5(영카트) 버전

5.5.8.2.4

사용 PHP 버전

7.4

본문

안녕하세요

질문 드릴게요

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

 


<?php
if (!defined('_GNUBOARD_')) exit;
/**
 * 'job' 게시판 글쓰기/수정 완료 후, 추가 정보를 g5_job_post 테이블에 저장하는 이벤트
 */
add_event('write_update_after', 'save_job_post_custom_data_and_redirect', 10, 2);
function save_job_post_custom_data_and_redirect($bo_table, $wr_id) {
    
    // 이 기능은 'job' 게시판에서만 작동하도록 제한합니다.
    if ($bo_table !== 'job' || !$wr_id) {
        return;
    }
    
    global $member; // 로그인한 회원 정보를 사용하기 위해 global 선언
    // 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;
    // 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']);
    }
    // 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);
    $sql = "INSERT INTO g5_job_post ({$sql_fields}) VALUES ({$sql_values}) ON DUPLICATE KEY UPDATE {$update_sql}";
    
    // 5. 쿼리를 실행하여 DB에 저장합니다.
    sql_query($sql);
    // ★★★★★ 6. 데이터 저장 후 '광고관리' 페이지로 강제 이동! ★★★★★
    goto_url(G5_URL.'/ad_management.php');
}
?>

 

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

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

이 질문에 댓글 쓰기 :

답변 2

echo $sql;
exit;


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

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

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


 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,098
© SIRSOFT
현재 페이지 제일 처음으로