도와주세요 ^ㅛ^
본문
안녕하세요
질문 드릴게요
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);
위 화일 실행은 어디서 어떻게 하게 되어있는가요?
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 추가
답변을 작성하시기 전에 로그인 해주세요.